CABasicAnimation
我的UIView 中有一个无限动画(旋转图像,输入:)
animation.repeatCount = HUGE_VALF;
当我推送一个新的 ViewController 并返回到包含 View 动画的初始 ViewController 时,旋转停止了。
即使我viewWillAppear
在调用 ViewController 的方法时再次设置动画,它也不会再次旋转。
我究竟做错了什么?
CABasicAnimation
我的UIView 中有一个无限动画(旋转图像,输入:)
animation.repeatCount = HUGE_VALF;
当我推送一个新的 ViewController 并返回到包含 View 动画的初始 ViewController 时,旋转停止了。
即使我viewWillAppear
在调用 ViewController 的方法时再次设置动画,它也不会再次旋转。
我究竟做错了什么?
实际上,有一种简单的方法可以解决这个问题,
将您的动画设置为:
斯威夫特 3 版本
animation.removedOnCompletion = false
斯威夫特 4 版本
animation.isRemovedOnCompletion = false
当 NavigationController 被推送到另一个 ViewController 的视图时,该层本身不会被破坏,因为 UINavigationControllerviewControllers
具有将保留原始 viewController 的属性,因此它的视图和您的动画层。
当视图从界面中移除时,即使您将其 repeatCount 设置为无限,该 CABasicAnimation 对象也会被破坏。因此将其设置isRemovedOnCompletion
为 false 以保留它。
当一个层从屏幕上移除时,它会失去它的动画。一旦图层再次出现在屏幕上,您需要重新添加它们。
viewWillAppear:
为时过早,因为那时该图层实际上还没有出现在屏幕上。尝试将动画添加到viewDidAppear:
.