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.