当前循环结束后停止循环动画

时间:2012-04-27 01:18:29

标签: objective-c ios core-animation

在我的应用程序中,我有一些无限循环的CAAnimations(animation.repeatCount = HUGE_VALF)。

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

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

那么,有什么建议吗?

2 个答案:

答案 0 :(得分:2)

使用完成块基于标志再次调用动画的动画怎么样?如果要使动画序列停止,请将标志设置为false。完成块将看到repeat标志为false,并在最后一个循环结束时停止。

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

如果您正在使用图层变换,则需要在CATransactionBegin /中使用[CATransaction setDisableActions:YES]将设置变换的代码放入其最终状态,以便不会隐式更改动画。

答案 1 :(得分:0)

使用用于设置重复次数的相同属性,可以获得所需的行为。循环结束后,动画将结束。

animation.repeatCount = 0