ios uiview calayer cabasicanimation

ios - Infinite CABasicAnimation stops



uiview calayer (2)

Tengo una animación infinita (rotando una imagen, escriba: CABasicAnimation ) en mi UIView con

animation.repeatCount = HUGE_VALF;

Cuando presiono un nuevo ViewController y vuelvo al ViewController inicial con la animación que contiene Ver dentro, la rotación se detuvo.

Incluso si configuro la animación nuevamente cuando se viewWillAppear método viewWillAppear de ViewController, no se rotará nuevamente.

¿Qué estoy haciendo mal?


Cuando una capa se elimina de la pantalla, pierde sus animaciones. Debe volver a agregarlos una vez que la capa esté nuevamente en la pantalla.

viewWillAppear: es demasiado temprano, porque la capa no está realmente en la pantalla en ese momento. Intente agregar la animación en viewDidAppear:


En realidad, hay una manera simple de resolver esto.
configurando su animación a esto:

Versión Swift 3

animation.removedOnCompletion = false

Versión Swift 4

animation.isRemovedOnCompletion = false

La capa en sí no se destruye, cuando se viewControllers NavigationController a otra vista de ViewController, porque UINavigationController obtuvo la propiedad viewControllers que conservará el viewController original y, por lo tanto, su vista y su capa animada.

Es este objeto CABasicAnimation que se destruye cuando la vista se elimina de la interfaz a pesar de que se establece que repeatCount es infinito. Así que establece el isRemovedOnCompletion en falso para mantenerlo.