绘制CGPath作为路径构造

时间:2012-08-05 13:04:59

标签: ios core-graphics cgpath

是否可以在创建时绘制CGPath(添加每一行)而不是瞬间绘制的整个路径?我希望看到在添加线条时绘制的路径。

此外,是否可以一次绘制一条线作为较大路径的一部分,而不是每次使用一条额外的线条绘制路径?

2 个答案:

答案 0 :(得分:4)

如果使用CAShapeLayer并将路径设置为其path属性,则可以为strokeEnd值设置动画。

我不知道动态添加到这是多么简单,但我之前使用过这个来设置沿途有定时点的线(但这些线的整个路径都是预先知道的)

答案 1 :(得分:3)

@ wattson12绝对正确。以下是我过去如何做到这一点的一个例子:

- (void)animateBezier
{
    CAShapeLayer *bezier = nil;
    UIBezierPath *bezierPath = [self bezierPath]; // clearly, generate your path anyway you want

    bezier = [[CAShapeLayer alloc] init];

    bezier.path = bezierPath.CGPath;
    bezier.strokeColor = [UIColor redColor].CGColor;
    bezier.fillColor   = [UIColor clearColor].CGColor;
    bezier.lineWidth   = 5.0;
    bezier.strokeStart = 0.0;
    bezier.strokeEnd   = 1.0;
    [self.view.layer addSublayer:bezier];

    CABasicAnimation *animateStrokeEnd = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
    animateStrokeEnd.duration  = 1.0;
    animateStrokeEnd.fromValue = [NSNumber numberWithFloat:0.0f];
    animateStrokeEnd.toValue   = [NSNumber numberWithFloat:1.0f];
    [bezier addAnimation:animateStrokeEnd forKey:@"strokeEndAnimation"];
}

我不知道这是否是你想要的,或者你是否也希望稍后在路径中添加额外的点动画。如果这是您想要的,您可能会做相应调整fromValue或将另一个段的绘图设置为单独路径的动画。