如何在完成后不删除CABasicAnimation?

时间:2011-01-21 11:10:20

标签: iphone core-animation

很多人都在谈论在使用CABasicAnimation对象后保留它。

所以设置

  

removedOnCompletion = NO

动画对象在动画完成时保持附加到图层。如何在不创建新的CABasicAnimation的情况下重新启动此动画?

保持这个对象的意义何在?我知道的唯一好处是我们可以设置removedOnCompletion = NO并设置kCAFillModeForwards,以便Core Animation不会将可视化表示还原为CALayer中的模型值。

但是如何重新使用动画,就像每个人都在谈论的那样?

2 个答案:

答案 0 :(得分:6)

试试这个:

  1. 使用[layer addAnimation:myAnimation forKey:@"myKey"]

  2. 添加动画
  3. 要稍后获取参考,请致电[layer animationForKey:@"myKey"]

  4. 阅读this note from Apple,其中介绍了如何暂停和恢复(重新启动)动画。

答案 1 :(得分:0)

这对我有用,但我相信有人会告诉我价值已存储在钥匙中..

当我创建一个图层并为其分配动画时,我将动画设置为与图层关联的键控值。

在此示例中,layersCurrentAnimation是CABasicAnimation,myAnimatedLayer是CALayer。

[myAnimatedLayer setValue:layersCurrentAnimation forKey:@"basicAnimation"]

然后如果动画停止,我会从图层中取出动画值并重新运行

CABasicAnimation *thisAnimation = [myAnimatedLayer  valueForKey:@"basicAnimation"];

[myAnimatedLayer addAnimation:thisAnimation forKey:nil];