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
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.
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).
- 1. Cuándo usar Ruby vs Cuándo usar PHP
- 2. Cuándo usar categorías y cuándo usar subclases?
- 3. cuándo usar Tarea y cuándo usar Subproceso?
- 4. Cuándo usar undef_method, y cuándo usar remove_method?
- 5. Cuándo usar Pepino y cuándo usar RSpec?
- 6. ¿Puedo usar CALayer para acelerar la visualización?
- 7. Cuándo usar vectores y cuándo usar matrices en C++?
- 8. Cuándo usar componentes y cuándo usar extensiones en Yii?
- 9. Cuándo usar dup, y cuándo usar clon en Ruby?
- 10. Cuándo usar atributos vs. cuándo usar propiedades en python?
- 11. ¿Cuándo usar == y cuándo usarlo?
- 12. Cuándo usar sincronizado en Java
- 13. Cuándo usar Request.Cookies en Response.Cookies?
- 14. cuándo usar MVC en PHP?
- 15. ¿Cuándo usar PreRender en PageLoad?
- 16. ¿Cuándo debería usar # en ColdFusion?
- 17. cuándo usar destructor en php?
- 18. ¿Cuándo usar pragmas en sqlite?
- 19. Cuándo usar interfaces en Dart?
- 20. ¿Cuándo usar self en Model?
- 21. Cuándo usar GC.Collect() en .NET?
- 22. Cuándo usar layoutSubview en iOS
- 23. ¿Cuándo debe usar JCR y cuándo debe usar JPA/RDBMS?
- 24. Cuándo usar un módulo y cuándo usar una clase
- 25. Cuándo usar Requirejs y cuándo usar javascript incluido?
- 26. Cuándo usar assert() y cuándo usar try catch?
- 27. Cuándo usar interfaces o clases abstractas? Cuándo usar ambos?
- 28. Cuándo usar y cuándo no usar Try Catch Finally
- 29. Cuándo usar el sistema() y cuándo usar execv *()?
- 30. Cuándo usar Algoritmos genéticos vs. cuándo usar redes neuronales?
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. –
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
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. –