我想要用两种交替的颜色(例如黑色和白色,类似于 Preview.app 的选择框)描绘一个
我已经设置了 CAShapeLayer 的白色边框,并将路径属性设置为虚线黑色线条。我希望这样可以呈现出黑白相间的虚线效果。然而,似乎路径是先绘制的,然后在其上方描绘了边框,如下图所示(毛发属于我的猫):
有人能提供更好的方法或让它正常工作的方法吗?
代码:
CAShapeLayer
的路径。我不确定如何做到这一点,或者使用 Quartz 是否能够实现。我已经设置了 CAShapeLayer 的白色边框,并将路径属性设置为虚线黑色线条。我希望这样可以呈现出黑白相间的虚线效果。然而,似乎路径是先绘制的,然后在其上方描绘了边框,如下图所示(毛发属于我的猫):
![CAShapeLayer with white border and black stroked path, the path is drawn first followed yb the border.](https://istack.dev59.com/ckSbQ.webp)
代码:
// Stroke a white border
[shapeLayer setFrame:shapeRect];
[shapeLayer setBorderColor:[[NSColor whiteColor] CGColor]];
[shapeLayer setBorderWidth:1.0];
// Stroked a black dash path (along the border)
// and fill shape with clear colour
[shapeLayer setFillColor:[[NSColor clearColor] CGColor]];
[shapeLayer setStrokeColor:[[NSColor blackColor] CGColor]];
[shapeLayer setLineWidth:1.0];
[shapeLayer setLineJoin:kCALineJoinRound];
[shapeLayer setLineDashPattern:
[NSArray arrayWithObjects:[NSNumber numberWithInt:5],
[NSNumber numberWithInt:5],
nil]];
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddRect(path, NULL, shapeLayer.bounds);
[shapeLayer setPath:path];
CGPathRelease(path);