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

问题描述 投票:1回答:2

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

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

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

那么,有什么建议吗?

objective-c ios core-animation
2个回答
2
投票

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

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

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


0
投票

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

animation.repeatCount = 0
© www.soinside.com 2019 - 2024. All rights reserved.