75 votes

Animation UIView et CALayers

J'ai du mal à conceptualiser des animations avec une CALayer à l'opposé de L'interface de l'UIView propres méthodes d'animation. Lancer " Animation de base "Peut-être que quelqu'un peut articuler ces concepts à un haut niveau afin que je puisse mieux visualiser ce qui se passe et pourquoi je voudrais migrer les animations UIView (avec lesquelles je suis assez familier maintenant) vers des animations CALayer sur l'iPhone. Chaque vue dans Cocoa-Touch obtient automatiquement un calque. Et, il semble que l'on puisse en animer un et/ou l'autre ? !? Même les mélanger ensemble ? !? Mais pourquoi ? Où est la limite ? Quel est le pour/contre de chacun ?

Le Guide de programmation de l'animation de base se lance immédiatement dans les classes de calques et de synchronisation et je pense qu'il faut prendre du recul pour comprendre pourquoi ces différents éléments existent et comment ils sont liés les uns aux autres.

55voto

Matt Long Points 16701

Utilisez les vues pour le contrôle et les couches pour le plaisir des yeux. Les calques ne reçoivent pas d'événements, il est donc plus facile d'utiliser une vue dans ce cas, mais lorsque vous souhaitez animer un sprite ou des arrière-plans, les calques prennent tout leur sens. Les événements passent directement à travers les couches jusqu'à la vue d'arrière-plan, ce qui vous permet d'obtenir une jolie représentation visuelle sans perturber vos événements. Si vous essayez de superposer une vue que vous n'utilisez que pour la représentation visuelle, vous devrez faire passer vous-même les événements des robinets vers la vue sous-jacente.

25voto

Marco Mustapic Points 3327

Un site UIView est toujours rendu à un CALayer . Lorsque vous utilisez UIView pour animer une vue, vous manipulez en fait l'interface sous-jacente de la vue. CALayer .

Si vous avez besoin de faire des choses simples, utilisez la fonction UIView méthodes. Pour des situations plus complexes, ou si vous souhaitez que les couches ne soient pas associées à une vue en particulier, utilisez la méthode suivante CALayers .

21voto

Chris Garrett Points 2468

J'ai fait un tas d'applications l'année dernière. Voici ma règle d'or :

  1. Utilisez UIView jusqu'à ce qu'il ne fasse pas ce que vous voulez.
  2. Ensuite, passez à CoreAnimation. Mais avant que vous ne vous y mettiez trop...
  3. Si vous écrivez plus que quelques animations, utilisez Cocos2D.

9voto

Daniel Points 16707

Les transformations UIView sont uniquement en 2D et sont limitées à cela, les transformations CALayer peuvent cependant être en 3D et vous devriez les utiliser si vous voulez faire des choses en 3D, l'animation UIView fonctionnera si vous changez soit la transformation UIView soit la transformation CALayer. Ainsi, à un niveau de base, vous pouvez faire beaucoup plus de manipulations lorsque vous travaillez avec un calque plutôt qu'avec la vue.

2voto

TouchGameDev Points 123

Je ne suis pas sûr de bien comprendre la réponse de Chris à la question "En quoi Cocos2D est-il meilleur ? N'avez-vous pas d'autres problèmes alors, concernant la gestion des événements tactiles et beaucoup d'autres choses qui manquent dans openGL ES ?"

On dirait que la réponse suggère que Cocos2D n'est pas basé sur le framework OpenGL ES alors qu'en fait, il l'est. Bien qu'il s'agisse d'un excellent moteur de jeu 2D, il met en œuvre OpenGL pour une grande partie de son rendu. Associé à une bibliothèque de physique, il offre de nombreuses possibilités très intéressantes pour l'animation, et Chris a raison : il y a beaucoup moins de codage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X