2009-08-26 14 views
12

Me preguntaba cómo funcionan las animaciones en Cocoa Touch. Por ejemplo:¿Cómo funciona [UIView beginAnimations]?

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 

view1.alpha = 1.0; 
view2.frame.origin.x += 100; 

[UIView commitAnimations]; 

¿Cómo funciona UIView un seguimiento de los cambios en las propiedades de los dos puntos de vista?

Sospecho que se utiliza KVO, pero ¿realmente observa los cambios en cada vista entre las llamadas beginAnimations y commitAnimations?

Cualquier idea sería apreciada!

Respuesta

12

Una explicación simplificada:

Todas las animaciones para todos los puntos de vista son manejados en una sola pila, beginAnimations:context: impulsará un nuevo activo CAAnimationGroup en la pila, y commitAnimations aparecerá el grupo actual de animación activa.

Si hay un grupo de animación activo en la pila, todos los establecedores de propiedades animables crearán instancias de subclase CAAnimation para manejar esa propiedad y agregar luego al grupo de animación activo.

Cuando aparece la última animación, se vuelve a reproducir.

0

Creo que es solo un envoltorio sobre las antiguas llamadas de CoreAnimation. Mire en la API CoreGraphics, puede ver que hay varias claves que debe establecer en un diccionario, al tiempo que proporciona valores iniciales y finales para estas claves.

Cuestiones relacionadas