objective-c - 在当前循环结束后停止循环的 CAAnimation

标签 objective-c ios core-animation

在我的应用程序中,我有一些无限循环的 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/

相关文章:

iPhone:使用 block 动画方法的翻转动画在滑动手势中使用时不流畅

iphone - 3D 立方体问题,第 2 部分

ios - 可以在数组中添加一些填充吗?

iphone - 如何为 View 的同时旋转和缩放设置动画?

ios - 大量同步动画的设计模式

iphone - 在摇动手势上做 IBAction

iphone - 为分组的 UITableViewCell 自定义选定的背景颜色

ios - 如何在一般情况下重现 EXC_BAD_ACCESS

ios - UIButton 图像从 URL 加载后淡入淡出

iOS 替代 PDF 渲染器