19

CABasicAnimation我的UIView 中有一个无限动画(旋转图像,输入:)

animation.repeatCount = HUGE_VALF;

当我推送一个新的 ViewController 并返回到包含 View 动画的初始 ViewController 时,旋转停止了。

即使我viewWillAppear在调用 ViewController 的方法时再次设置动画,它也不会再次旋转。

我究竟做错了什么?

4

2 回答 2

74

实际上,有一种简单的方法可以解决这个问题,
将您的动画设置为:

斯威夫特 3 版本

animation.removedOnCompletion = false

斯威夫特 4 版本

animation.isRemovedOnCompletion = false

当 NavigationController 被推送到另一个 ViewController 的视图时,该层本身不会被破坏,因为 UINavigationControllerviewControllers具有将保留原始 viewController 的属性,因此它的视图和您的动画层。

当视图从界面中移除时,即使您将其 repeatCount 设置为无限,该 CABasicAnimation 对象也会被破坏。因此将其设置isRemovedOnCompletion为 false 以保留它。

于 2016-01-18T14:06:54.107 回答
5

当一个层从屏幕上移除时,它会失去它的动画。一旦图层再次出现在屏幕上,您需要重新添加它们。

viewWillAppear:为时过早,因为那时该图层实际上还没有出现在屏幕上。尝试将动画添加到viewDidAppear:.

于 2012-11-21T20:05:26.147 回答