是否可以在创建时绘制CGPath(添加每一行)而不是瞬间绘制的整个路径?我希望看到在添加线条时绘制的路径。
此外,是否可以一次绘制一条线作为较大路径的一部分,而不是每次使用一条额外的线条绘制路径?
答案 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或将另一个段的绘图设置为单独路径的动画。