2

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

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

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

那么,有什么建议吗?

4

2 回答 2

2

如何使用一个动画,其完成块会根据标志再次调用动画?当您想让动画序列停止时,将该标志设置为 false。完成块将看到重复标志为假,并在最后一个循环结束时停止。

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

如果您正在使用层变换,则需要将设置变换为其最终状态的代码放在 CATransactionBegin/ 中,并带有 [CATransaction setDisableActions: YES],这样更改就不会被隐式动画化。

于 2012-04-27T01:29:53.967 回答
-1

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

animation.repeatCount = 0
于 2019-04-04T15:29:19.783 回答