Pregunta Animación UIView vs CALayers


Estoy luchando con la conceptualización de animaciones con un CALayer Opuesto a UIView's propios métodos de animación. Lanzar "Animación central"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 (con las que estoy familiarizado ahora) a las animaciones CALayer en el iPhone Cada vista en Cocoa-Touch automáticamente obtiene una capa. Y, al parecer, puedes animar una y / o el 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í.


75
2017-07-16 19:20


origen


Respuestas:


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.


53
2017-07-26 05:35



Un UIView siempre se representa a un CALayer. Cuando usas UIView métodos para animar una vista, efectivamente está manipulando el subyacente CALayer.

Si necesita hacer cosas simples, use el UIView métodos. Para situaciones más complejas, o si desea capas no asociadas con ninguna vista en particular, use CALayers.


25
2017-07-16 20:01



He hecho un montón de aplicaciones el año pasado. Aquí está mi regla de oro:

  1. Use UIView hasta que no haga lo que desea.
  2. Luego muévase a CoreAnimation. Pero antes de que te metas demasiado ...
  3. Si escribe más de unas pocas animaciones, use Cocos2D.

21
2017-07-16 20:13



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.


9
2017-07-16 19:34



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.


2
2017-11-15 22:24