无限CABasicAnimation停止

pin*_*nki 18 calayer uiview cabasicanimation ios

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

animation.repeatCount = HUGE_VALF;
Run Code Online (Sandbox Code Playgroud)

当我按下一个新的ViewController并返回到包含View里面的动画的初始ViewController时,旋转停止了.

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

我究竟做错了什么?

dis*_*ute 63

实际上,有一种简单的方法来解决此
设置动画:

Swift 3版

animation.removedOnCompletion = false
Run Code Online (Sandbox Code Playgroud)

Swift 4版

animation.isRemovedOnCompletion = false
Run Code Online (Sandbox Code Playgroud)

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

即使将repeatCount设置为无限,当从界面中删除视图时,也会破坏此CABasicAnimation对象.所以设置isRemovedOnCompletion为false以保持它.


rob*_*off 5

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

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

  • 在应用程序进入后台模式并返回后,我确实尝试了 viewDidAppear,它甚至没有被调用! (3认同)