是否可以在创建时绘制 CGPath(添加每条线),而不是瞬间绘制点的整个路径?我想看到在添加线条时绘制的路径。
另外,是否可以一次绘制一条线作为较大路径的一部分,而不是每次都用一条额外的线在其自身上绘制路径?
是否可以在创建时绘制 CGPath(添加每条线),而不是瞬间绘制点的整个路径?我想看到在添加线条时绘制的路径。
另外,是否可以一次绘制一条线作为较大路径的一部分,而不是每次都用一条额外的线在其自身上绘制路径?
如果您使用 CAShapeLayer 并将路径设置为其路径属性,则可以为 strokeEnd 值设置动画。
我不知道动态添加它会有多简单,但我之前用它来为沿途的时间点制作动画(但这些线的整个路径都是事先知道的)
@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 的操作,或者将另一个段的绘图动画化为单独的路径。