2009-09-19 8 views
18

Estoy un poco confundido sobre cuándo usar CALayer en el iPhone o Mac y cuándo no usarlo? CoreAnimation funciona bien en mis objetos basados ​​en UIView sin tener que usar CALayer. ¿Cuándo es el momento apropiado para profundizar en esta clase?Cuándo usar CALayer en Mac/iPhone?

Respuesta

35

En mis puntos de referencia, UIView y CALayer proporcionan el mismo nivel de rendimiento en el iPhone. Como Rpetrich menciona en su comentario, UIViews es una capa delgada alrededor de CALayers. En Mac, los CALayers son mucho más livianos que NSViews.

Como señala Ben, puede ir más allá de las capacidades de las animaciones implícitas trabajando directamente con CALayers, incluso proporcionando algunos efectos tridimensionales a través de CATransform3D. En muchos casos, puede hacer esto incluso con sus vistas estándar accediendo a la capa de respaldo (si la vista está respaldada por capas).

Otra preocupación es el código multiplataforma (Mac/iPhone). My iPhone application usa una interfaz all-CALayer para su vista principal en gran parte porque puedo usar exactamente el mismo código para dibujar esa interfaz en su contraparte Mac. Para otro ejemplo de esto, lo dirijo al Core Plot framework, que dibuja gráficos completamente usando CALayers y funciona tanto en Mac como en iPhone. Los CALayers son prácticamente iguales en ambas plataformas, donde UIView y NSView tienen interfaces muy diferentes.

4

Si puede hacer lo que quiera con 'animación implícita' (que ofrece UIKit/AppKit sin tener que cavar en CA, capas y animadores), entonces definitivamente siga esa ruta.

CoreAnimation entra en juego cuando comienzas a utilizar animaciones más complejas, como movimiento no lineal o efectos repetitivos, y ciertos efectos sincronizados. Hay MUCHO que puedes hacer con él, pero es una herramienta bastante resistente (con una curva de aprendizaje acorde, al menos en comparación con el material de UIKit).

+3

Creo que esta declaración es engañosa. El nivel de abstracción que ofrece Core Animation es notable. La API es muy fácil de aprender y trabajar. Entiendo que lo está comparando con UIKit, pero lo llama "trabajo pesado" y usar las palabras "aprender a curar" es desalentador y creo que es engañoso. Sin embargo, la Guía básica de programación de animación podría usar un poco de trabajo. –

+2

Estoy de acuerdo con Joe; UIViews son solo una capa delgada sobre CALayer y UIResponder. Si no fuera por Interface Builder, los CALayers no serían mucho más difíciles de trabajar que UIViews (y para cualquiera que desarrolle OpenGL, ambos se simplifican enormemente) – rpetrich

+2

bien, tal vez fui un poco duro en mi descripción: CoreAnimation IS awesome, y fácil una vez que te acostumbras. Sin embargo, es un orden de magnitud más de trabajo que simplemente envolver un mensaje setFrame: en las llamadas de animación de inicio/confirmación. –

Cuestiones relacionadas