在我的应用程序中,我有一些无限循环的CAAnimations(animation.repeatCount = HUGE_VALF
)。
我想要做的是在当前周期结束后删除这些动画。 -[CALayer removeAnimationForKey:]
使图层跳转到正常位置,我想阻止它。
我可以做的是:获取图层表示层的当前变换(我正在进行旋转),计算完成动画的时间,删除动画,以及添加另一个动画使用repeatCount为1,但这似乎不必要复杂,我觉得必须有一个更简单的方法来做到这一点。
那么,有什么建议吗?
答案 0 :(得分:2)
使用完成块基于标志再次调用动画的动画怎么样?如果要使动画序列停止,请将标志设置为false。完成块将看到repeat标志为false,并在最后一个循环结束时停止。
提交动画后,您应该将变换更改为其结束值。如果您正在进行视图动画,只需将变换设置为其最终值。这样,一旦移除动画,它将保持在最终状态。
如果您正在使用图层变换,则需要在CATransactionBegin /中使用[CATransaction setDisableActions:YES]将设置变换的代码放入其最终状态,以便不会隐式更改动画。
答案 1 :(得分:0)
使用用于设置重复次数的相同属性,可以获得所需的行为。循环结束后,动画将结束。
animation.repeatCount = 0