我正在 UIView 的 drawRect 方法中绘制路径。在某些情况下,路径会消失,我想对此进行动画处理 - 我们称之为路径的“取消绘制”。
对于动画,我正在创建一个 CAShapeLayer,给它 myPath,然后设置一个 CABasicAnimation (animationWithKeyPath:@"strokeEnd")。
我的问题是如何从 drawRect 中绘制的内容切换到动画。我必须从 drawRect 绘制的内容中删除 myPath 并调用 setNeedsDisplay - 否则动画将被从 drawRect 绘制的路径隐藏。
- (void)animationDidStart:(CAAnimation *)theAnimation
{
myPath = nil;
[self setNeedsDisplay];
}
但是这样我看到了我的路径,然后快速闪烁,没有路径,然后路径再次由 CoreAnimation 渲染并且很好地未绘制。
我可以更好地避免闪烁吗?
背景 这是我设置动画的方式:
- (void) startAnimation
{
pathLayer.path = myPath.CGPath;
pathLayer.hidden = false;
CABasicAnimation *pathAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
pathAnimation.duration = 1;
pathAnimation.fromValue = [NSNumber numberWithFloat:1.0f];
pathAnimation.toValue = [NSNumber numberWithFloat:0.0f];
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = NO;
pathAnimation.delegate = self;
[pathLayer addAnimation:pathAnimation forKey:@"strokeEnd"];
}