2012-01-14 9 views
6

Estoy tratando de encontrar una forma de detectar si una vista está siendo animada.¿Hay alguna forma de detectar una animación en ejecución en iOS?

Ejemplo: he aplicado una sombra en la capa de una vista, especificando un shadowPath para el rendimiento. Cuando se cambia el tamaño de la vista, la sombra debe animarse a lo largo. Puedo observar el marco de la vista y cambiar el shadowPath de la capa en consecuencia. Pero mientras la vista cambia de tamaño, la sombra salta adelante ya que el cambio no está animado.

Sé cómo animar el shadowPath usando CABasicAnimation, pero necesito conocer las propiedades de una animación en curso para poder aplicarlas también a mi animación (principalmente: duración, suavizado).

Esto se encuentra en un componente de tipo marco, por lo que no puedo suponer que conozco las propiedades de duración y suavizado de antemano.

¿Hay alguna manera de detectar una animación de inicio/ejecución al observar el marco?

Respuesta

12

Puede recuperar todas las animaciones unidos a la capa de concreto de vista sabiendo que es clave llamando

[yourView.layer animationForKey:@"key"] 

para obtener todas las claves hay algo de animación para, llamar

NSArray* keys = [yourView.layer animationKeys]; 
+0

Ah genial. ¡Gracias! – Inferis

0

creo que la mejor práctica debe ser ....

UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.7]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 

.....your code 
// Set animation did stop selector before committing the animations 

[UIView setAnimationDidStopSelector:@selector(animationFinished:)]; 

[UIView commitAnimations]; 
Cuestiones relacionadas