有没有一种方法可以暂停核心动画,然后在稍后的某个时间恢复它?

8

我有几个同时进行的核心动画。它们都有一个上下文和一个动画id,其中上下文是被动画化的对象(UIImageView对象)。我想暂停它们,这样动画就会暂时停止,然后当某些事情完成后,恢复它以完成它。这些事情只发生在UIScrollView中非常快速的滚动移动中。我想通过停止所有正在进行的动画来提高性能,但不停止使滚动视图滚动的动画。我已经为该滚动视图实现了自定义内容偏移的动画。

4个回答

18

5

4
我解决这个问题的唯一方法如下:
对于每个你想停止动画的视图:
将该视图的框架设置为演示层
从该视图中删除所有动画
执行滚动操作
重新计算动画
向视图添加新动画
我知道这不是你想听到的,但它并没有听起来那么糟糕。跟踪你想要停止的视图的好方法是给它们一个预定的标签。
删除动画的方法如下:
[myView.layer removeAllAnimations]
[myView.layer removeAnimationForKey:@"theAnimationKey"]

你如何从视图中移除动画? - Thanks
[myView.layer removeAllAnimations] 或者 [myView.layer removeAnimationForKey:@"theAnimationKey"] - Corey Floyd
这可能是一个愚蠢的问题,但我该如何将视图的框架设置为演示层?我假设你在这里谈论的不是视图的框架属性。 - kareman
如果您需要将视图的框架设置为呈现层,则只需说 view.frame = view.layer.presentationLayer.frame。 - Corey Floyd

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接