我正在将一个UIBezierPath绘制到CAShapeLayer中,因为我想使用strokeStart和strokeEnd来控制绘制路径的哪些部分。一切正常,除了忽略lineDashPattern。我做错了什么?
我尝试在UIBezierPath本身上使用setLineDash
。如果我直接将路径划入上下文(使用[path stroke]
),它会起作用,但如果我将CGPath分配给shapeLayer,这是我需要的。
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)context
{
UIGraphicsPushContext(context);
CAShapeLayer *shapeLayer = (CAShapeLayer *)layer;
UIBezierPath *path = [MyMapPath pathForMap:nil];
shapeLayer.path = path.CGPath;
shapeLayer.fillColor = [[UIColor clearColor] CGColor];
shapeLayer.strokeColor = [[UIColor redColor] CGColor];
shapeLayer.lineWidth = 6.0f;
shapeLayer.lineDashPattern = @[@2,@2];
shapeLayer.strokeStart = 0.0f;
shapeLayer.strokeEnd = 0.7f;
UIGraphicsPopContext();
}