2012-04-27 84 views
1

在我的应用程序中,我有一些无限循环的CAAnimations(animation.repeatCount = HUGE_VALF)。当前周期结束后停止循环CAAnimation

我想要做的是在当前周期结束后删除这些动画。 -[CALayer removeAnimationForKey:]使层跳到它的正常位置,我想要阻止它。

什么我可能做的是:获取图层表示层(我正在做一个旋转)的当前变换,计算完成动画的时间,删除动画,并添加另一个动画的repeatCount一个,但这似乎不必要的复杂,我觉得必须有一个更简单的方法来做到这一点。

那么,有什么建议吗?

回答

2

如何使用完成块基于标志再次调用动画的动画?当您想要停止动画序列时,将该标志设置为false。完成块将看到重复标志为假,并在最后一个周期结束时停止。

提交动画后,应该将变换更改为其最终值。如果您正在进行视图动画,只需将变换设置为其最终值即可。这样,一旦动画被删除,它将保持最终状态。

如果您使用图层转换,您需要将设置转换的代码放置在CATransactionBegin/CATransaction setDisableActions:YES中,以便更改不会隐式生成动画。

+0

使用隐式动画..我没有想到这一点,但我认为这也需要一些hackery,因为我将有这个动画的几个意见,并需要开始/停止这些单独..我会看到如果我无论如何,明天都可以获得隐式动画 – Ahti 2012-04-27 01:43:45