我有几个Core Animation同时进行。它们都有一个上下文和一个动画id,其中上下文是动画的对象(UIImageView对象)。我想暂停它们,以便动画暂时停止,然后当某些事情完成后,恢复它以完成它。这些事情只发生在UIScrollView中非常快速的滚动运动中。我希望通过停止所有正在进行的动画而不是滚动视图滚动的动画来提高性能。我已经为该滚动视图实现了contentOffset的自定义动画。
答案 0 :(得分:18)
您可以通过将动画的速度设置为零来暂停图层动画,请参阅How to pause the animation of a layer tree。
答案 1 :(得分:5)
对于任何来搜索的人来说,这就是你暂停和恢复动画的方式:
https://developer.apple.com/library/archive/qa/qa1673/_index.html
答案 2 :(得分:4)
我解决这个问题的唯一方法如下。
对于您希望停止制作动画的每个视图:
将视图的框架设置为表示层
从该视图中删除所有动画
执行滚动
重新计算动画
向视图中添加新动画
我知道这不是你想听到的,但它并不像听起来那么糟糕。跟踪要停止的视图的一种好方法是为它们提供预定的标记。
删除动画:
[myView.layer removeAllAnimations]
[myView.layer removeAnimationForKey:@“theAnimationKey”]
答案 3 :(得分:0)