ios - Animación UIView vs CALayers
core-animation uiviewanimation (5)
He hecho un montón de aplicaciones el año pasado. Aquí está mi regla de oro:
- Use UIView hasta que no haga lo que desea.
- Luego muévase a CoreAnimation. Pero antes de que te metas demasiado ...
- Si escribe más de unas pocas animaciones, use Cocos2D.
Estoy luchando con la conceptualización de animaciones con un CALayer en oposición a los propios métodos de animación de UIView . Lanza " Core Animation " en esto y, bueno, tal vez alguien pueda articular estos conceptos desde un alto nivel para que pueda visualizar mejor lo que está sucediendo y por qué me gustaría migrar las animaciones de UIView (que ahora estoy bastante familiarizado) a CALayer animaciones en el iPhone. Cada vista en Cocoa-Touch automáticamente obtiene una capa. Y, parece, ¿puedes animar a uno y / oa otro? ¡¿Incluso mezclarlos juntos?!? ¿Pero por qué? ¿Dónde está la línea? ¿Cuál es el pro / con para cada uno?
La Guía básica de programación de animación salta de inmediato a las clases de capa y tiempo y creo que es necesario dar un paso atrás y comprender por qué existen estas piezas variadas y cómo se relacionan entre sí.
Las transformaciones de UIView son solo 2D y están restringidas a eso, las transformadas de capas pero pueden ser 3D y debes usarlas si quieres hacer cosas en 3D, la animación UIView funcionará si cambias la transformación UIView o la transformación CALayer. Entonces, en un nivel básico, puedes hacer mucha más manipulación cuando trabajas con una capa en lugar de la vista.
No estoy seguro de si estoy malinterpretando la respuesta de Chris a "¿Qué está haciendo mejor Cocos2D? ¿Entonces no tiene otros problemas con respecto al manejo de eventos táctiles y muchas otras cosas que fallan en OpenGL ES?"
Parece que la respuesta sugiere que Cocos2D no se basa en el framework OpenGL ES cuando en realidad es real. Si bien es un excelente motor de juegos en 2D, implementa OpenGL durante gran parte de su proceso de renderización (adjunto a una biblioteca de física que permite muchas posibilidades muy interesantes de animación) y Chris está en lo cierto, es mucho menos codificante.
Use vistas para control y capas para ojos dulces. Las capas no reciben eventos por lo que es más fácil usar una vista para esos casos, pero cuando quieres animar un sprite o fondos, etc., las capas tienen sentido. Los eventos pasan a través de las capas hasta la vista de respaldo para que pueda tener una representación visual bonita sin estropear sus eventos. Intenta superponer una vista que solo estás utilizando para la representación visual y tendrás que pasar los eventos tap a la vista subyacente tú mismo.
Un UIView
siempre se representa en un CALayer
. Cuando utiliza métodos UIView
para animar una vista, está manipulando efectivamente el CALayer
subyacente.
Si necesita hacer cosas simples, use los métodos UIView
. Para situaciones más complejas, o si desea capas no asociadas con ninguna vista en particular, use CALayers
.