这样绘制虚线路径非常简单

ios - iOS CG虚线路径-LMLPHP

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

可以绘制更复杂的虚线吗?
例:

ios - iOS CG虚线路径-LMLPHP

最佳答案

您已经创建了一条具有六个长度的路径。用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使用较窄的线宽,然后再次是使用CGContextSetLineDashlengths2使用较粗的线宽。例如,用红色绘制一个较宽的线宽的第二个,看起来像:

ios - iOS CG虚线路径-LMLPHP

如果将两者都绘制成黑色,则看起来像:

ios - iOS CG虚线路径-LMLPHP

根据需要调整值,但只需确保两个lengths的总和加起来是相同的值,使lengths2的描边部分与lengths中段的开头和结尾对齐。

关于ios - iOS CG虚线路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37515993/

10-10 15:30