我正在试验CAAnimation,就像许多新手做CAAnimation一样;完成后,该层将恢复到其原始状态。
关于如何解决这个问题在这里问了几次,答案是将以下代码添加到您的CAAnimation中。
animation.removedOnCompletion = NO;虽然这是可行的,但根据苹果的WWDC讨论CAAnimation的视频,推荐的解决方案是:
// animating opacity
layer.opacity = newOpacityValue;
[layer addAnimation:animation forKey:@"opacity"];所以我很想知道这两者之间的主要区别是什么,以及什么时候使用它们?
发布于 2012-02-18 00:19:20
显式动画实际上不会修改CALayer的属性。
他们只是修改了presentationLayer,这就是你实际看到的。动画完成后,您将看到与动画之前完全相同的CALayer。
通过如下方式设置该值
// animating opacity
layer.opacity = newOpacityValue;
[layer addAnimation:animation forKey:@"opacity"];请确保将动画值存储在模型中,这样即使从层中移除动画,所做的更改也会生效。
使用removedOnCompletion = YES不是一个持久的解决方案。无论何时从层中删除动画,它都会恢复到原来的状态。
发布于 2012-02-18 00:12:48
您不需要"removedOnCompletion“标志。
您需要的是将不透明度设置为动画之外的新值-如您的第二个示例。
使用"removedOnCompletion“将不会释放您的动画对象-如果您有大量动画,则会耗尽您的内存。
CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"opacity"];
animation.fromValue=[NSNumber numberWithFloat:0];
animation.toValue=[NSNumber numberWithFloat:1];
layer.opacity=1; // this line will make sure the opacity will stay 1 when the animation is completed
[layer addAnimation:animation forKey:@"opacity"];https://stackoverflow.com/questions/9331238
复制相似问题