在CAShapeLayer中绘制虚线

时间:2014-05-15 22:03:28

标签: ios drawing cashapelayer

我正在将一个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();
}    

0 个答案:

没有答案