无限CABasicAnimation停止

时间:2012-11-21 20:01:03

标签: ios uiview calayer cabasicanimation

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

animation.repeatCount = HUGE_VALF;

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

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

我做错了什么?

2 个答案:

答案 0 :(得分:56)

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

Swift 3版

animation.removedOnCompletion = false

Swift 4版

animation.isRemovedOnCompletion = false

当NavigationController被推送到另一个ViewController的视图时,图层本身没有被破坏,因为UINavigationController获得了viewControllers属性,它将保留原始的viewController,从而保留其视图和动画层。

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

答案 1 :(得分:4)

当从屏幕上移除图层时,它会丢失动画。一旦图层再次出现在屏幕上,您需要将它们添加回来。

viewWillAppear:太早了,因为到那时该图层实际上并不在屏幕上。尝试在viewDidAppear:中添加动画。