重启UIView重复动画

Restart UIView repeat animation

我在 iOS 中设置了一个重复动画:

[UIView animateKeyframesWithDuration:duration 
                               delay:0.0 
                             options:UIViewKeyframeAnimationOptionRepeat 
                          animations:^{
    ...
}];

但事实证明,当我显示一个视图控制器然后关闭它时 - 动画似乎已冻结。

我对此进行了研究,发现当应用进入后台时动画会停止。但这里是一个显示在顶部的视图控制器。这会是同样的情况吗?

我发现解决方案是在应用程序退出到后台之前停止动画,如 Apple 这篇文章所示:https://developer.apple.com/library/archive/qa/qa1673/_index.html

我已经尝试过该解决方案,但对我没有用。显示视图控制器后,将调用动画的完成块。

如何解决这种动画卡顿的情况?

要在呈现另一个视图后重新启动动画,请将其放入viewWillAppear

如果您的动画在一段时间后或有条件地开始,只需添加一个 Bool,例如 animationHasStarted,在 viewWillAppear 中检查它,看看您是否应该 运行 动画