在我的应用程序中,我有一些无限循环的 CAAnimations (animation.repeatCount = HUGE_VALF
)。
我想做的是在当前循环结束后删除那些动画。 -[CALayer removeAnimationForKey:]
使层跳转到它的正常位置,我想阻止这种情况。
我可以做的是:获取图层表示层的当前变换(我正在旋转),计算完成动画的时间,删除动画,然后添加另一个动画repeatCount 为 1,但这似乎不必要的复杂,我觉得必须有更简单的方法来做到这一点。
那么,有什么建议吗?
最佳答案
使用其完成 block 基于标志再次调用动画的动画怎么样?当您想让动画序列停止时,将标志设置为 false。完成 block 将看到重复标志为假,并在最后一个循环结束时停止。
提交动画后,您应该将变换更改为其最终值。如果您正在制作 View 动画,只需将变换设置为其最终值。这样,一旦动画被移除,它将保持在结束状态。
如果您正在使用层变换,则需要将用于将变换设置为最终状态的代码放入带有 [CATransaction setDisableActions: YES] 的 CATransactionBegin/中,这样就不会隐式设置动画。
关于objective-c - 在当前循环结束后停止循环的 CAAnimation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10343565/