a のパスCAShapeLayer
を 2 つの交互の色 (たとえば、黒と白、Preview.app の選択ボックスと考えてください) でストロークしたいと思います。これを行う方法、またはこれが Quartz で可能かどうかはわかりません。
白い境界線を持つ CAShapeLayer を設定し、パス プロパティを黒い破線に設定しました。私の希望は、これが白黒の破線の効果を与えることでした. ただし、パスが最初に描画され、境界線が上にストロークされるようです。スクリーンショットを参照してください (毛皮は私の猫のものです)。
これを機能させるためのより良いアプローチや方法を誰かが提案できますか?
コード、
// 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);