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 };
因此,笔划路径两次,一次是使用
CGContextSetLineDash
的lengths
使用较窄的线宽,然后再次是使用CGContextSetLineDash
的lengths2
使用较粗的线宽。例如,用红色绘制一个较宽的线宽的第二个,看起来像:如果将两者都绘制成黑色,则看起来像:
根据需要调整值,但只需确保两个
lengths
的总和加起来是相同的值,使lengths2
的描边部分与lengths
中段的开头和结尾对齐。关于ios - iOS CG虚线路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37515993/