首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在当前周期结束后停止循环CAAnimation

问在当前周期结束后停止循环CAAnimation
EN

Stack Overflow用户
提问于 2012-04-27 01:18:28
回答 2查看 1K关注 0票数 2

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

我想要做的是删除这些动画,在当前周期已经完成。-[CALayer removeAnimationForKey:]使图层跳转到正常位置,这是我想要防止的。

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

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-27 01:29:53

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

提交动画后,应将转换更改为其结束值。如果要进行视图动画,只需将转换设置为其最终值即可。这样,一旦动画被删除,它将保持在结束状态。

如果您使用的是层转换,则需要将将转换设置为其最后状态的代码放在CATransactionBegin/ with CATransaction setDisableActions: YES中,这样更改就不会被隐式动画化。

票数 2
EN

Stack Overflow用户

发布于 2019-04-04 15:29:19

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

代码语言:javascript
复制
animation.repeatCount = 0
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10343565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档