有没有办法暂停核心动画并在以后的某个时间恢复它?

Tha*_*nks 8 iphone cocoa-touch core-animation uikit

我有几个Core Animation同时进行.它们都有一个上下文和一个动画id,其中上下文是动画的对象(UIImageView对象).我想暂停它们,以便动画暂时停止,然后当某些事情完成后,恢复它以完成它.这些事情只发生在UIScrollView中非常快速的滚动运动中.我希望通过停止所有正在进行的动画而不是滚动视图滚动的动画来提高性能.我已经为该滚动视图实现了contentOffset的自定义动画.

Dou*_*las 18

您可以通过将动画的速度设置为零来暂停图层动画,请参阅如何暂停图层树的动画.


Der*_*mot 5

对于任何来搜索的人来说,这就是你暂停和恢复动画的方式:

https://developer.apple.com/library/archive/qa/qa1673/_index.html


Cor*_*oyd 4

我解决这个问题的唯一方法是以下。

对于您希望停止动画的每个视图:

将视图的框架设置为表示层

从该视图中删除所有动画

执行你的滚动

重新计算动画

向视图添加新动画

我知道这不是你想听到的,但它并不像听起来那么糟糕。跟踪您想要停止的视图的一个好方法是给它们一个预定的标签。


删除动画:

[myView.layer 删除所有动画]

[myView.layer removeAnimationForKey:@"theAnimationKey"]