iOS CG虚线路径

iOS CG dashed line path

这样画虚线路径很简单

CGFloat lengths[] = { 12.0, 4.0, 12.0, 4.0,  4.0, 4.0 };
CGContextSetLineDash(ctx, 0, lengths, 6);
//... path code: moveTo, lineTo, strokePath

可以画更复杂的虚线吗? 示例:

您已经创建了一条具有六个长度的路径。用 8 创建另一个以表示那些更宽的段的端点:

CGFloat lengths[]  = { 12.0,           4.0, 12.0,          4.0,  4.0, 4.0 };
CGFloat lengths2[] = {  3.0, 6.0, 3.0, 4.0, 3.0, 6.0, 3.0, 12.0 };

因此,对路径进行两次描边,一次使用 CGContextSetLineDashlengths 的窄线宽,然后第二次使用 CGContextSetLineDash 的较粗的线宽lengths2。例如,用红色线宽绘制第二个,它看起来像:

如果你把两个都画成黑色,看起来像:

调整您认为合适的值,但只需确保两者的所有 lengths 总和等于相同的值,因此 lengths2 的描边部分对齐lengths.

中段的开始和结束