Pregunta

Estoy luchando con animaciones conceptualizar con un CALayer en lugar de los métodos propios de UIView animación. Tirar " Core Animation " en esto y, bueno, tal vez alguien puede articular estos conceptos desde un nivel alto para que pueda visualizar mejor lo que está sucediendo y por qué me quieren migrar animaciones UIView (que estoy bastante familiarizado con ahora) para animaciones CALayer en el iPhone. Cada vista en Cocoa-Touch obtiene automáticamente una capa. Y, al parecer, puede animar un y / o el otro?!? Incluso mezclarlos entre sí?!? ¿Pero por qué? ¿Dónde está la línea? ¿Cuál es la pro / estafa para cada uno?

La Guía de programación Core Animation salta inmediatamente en las clases de capa de sincronización y y creo que tienen que dar un paso atrás y comprender por qué existen estas piezas variadas y cómo se relacionan entre sí.

¿Fue útil?

Solución

Usar vistas para el Control y capas para los ojos dulces. Capas no reciben eventos por lo que es más fácil de usar una vista para esos casos, pero cuando se desea animar un sprite o fondos, etc., capas tienen sentido. Eventos pasar a través de capas a la vista de respaldo para que pueda tener una representación muy visual sin echar a perder sus eventos. Tratar de revestir una vista que estás usando para la representación visual y que tendrá que pasar a través de eventos de derivación a la vista subyacente a sí mismo.

Otros consejos

Una UIView siempre se presta a una CALayer. Cuando se utiliza métodos UIView para animar un punto de vista, está manipulando eficazmente el CALayer subyacente.

Si usted tiene que hacer las cosas simples, utilice los métodos UIView. Para situatins más complejos, o si desea que las capas no se asocia con ningún punto de vista, en particular, CALayers uso.

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

  1. Uso UIView hasta que no hace lo que quiere.
  2. A continuación, pasar a CoreAnimation. Pero antes de entrar en ella demasiado ...
  3. Si se escribe más de unas pocas animaciones, utilice Cocos2D.

transformadas UIView sólo 2D y se limitan a las que, sin embargo transforma capa puede ser en 3D y se debe utilizar esos si que quiere hacer las cosas en 3D, animación UIView va a funcionar si cambia el UIView transformar o transformar el CALayer. Por lo tanto en un nivel básico, se puede hacer mucho más la manipulación cuando se está trabajando con una capa en lugar de la vista.

No estoy seguro de si estoy mal entendido la respuesta de Chris a '¿Qué está haciendo mejor Cocos2D? ¿No tienes otros problemas a continuación, en relación con el manejo de eventos táctil y muchos otras cosas que echa de menos en OpenGL ES?'

Parece que la respuesta sugiere Cocos2D no se basa en el marco de OpenGL ES, cuando en realidad es real. Si bien es un gran motor de juego 2D sí implementa OpenGL para gran parte de su representación - unido a una biblioteca física que permite una gran cantidad de posibilidades muy interesantes para la animación - y Chris es correcto - es mucho menos código de hecho

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top