2010-10-22 29 views
1

Je travaille actuellement sur des trucs d'animation de base pour iOS et je m'amuse vraiment. Cette question concerne les différentes manières de mettre en œuvre une animation. Supposons que vous souhaitiez faire pivoter un UIView plusieurs fois, mais avec des fonctions de synchronisation différentes pour chaque cycle d'animation. Au meilleur de ma connaissance, il y a au moins deux façons différentes de mettre en œuvre ceci:Avantages et inconvénients pour CAAnimationGroup vs CAKeyframeAnimation

  1. Je crée soit un CAAnimationGroup et ajouter les différents objets CABasicAnimation à lui. En contrôlant leur propriété beginTime et en définissant différents CAMediaTimingFunction sur eux, j'obtiens le comportement individuel que je veux.
  2. L'autre option consiste à créer un CAKeyframeAnimation et en ajoutant des valeurs de clé différentes, je peux personnaliser les différents «cadres» individuellement.

Donc ma question est la suivante: Y at-il un avantage à utiliser l'une de ces implémentations?

Ma question de suivi: Si oui, quelle méthode utilisez-vous pour le découvrir? En d'autres termes, comment pourrais-je mesurer la performance d'une animation?

Merci d'avance et meilleures salutations.

// Abeansits

Répondre

2

Pour moi, le choix entre les deux est une sémantique:

  • Si je veux animer un objet sur plusieurs étapes, j'utilise une animation d'images clés .
  • Si je veux animer simultanément plusieurs objets , j'utilise un groupe d'animation (qui peut éventuellement comprendre plusieurs animations d'images clés si les animations des objets individuels contiennent plusieurs étapes).
+0

Ok, semble avoir du sens. Mais avez-vous des moyens de vous assurer qu'une méthode n'est pas plus efficace que l'autre? Puisque vous mettez en œuvre l'animation en utilisant différentes classes et interfaces, il devrait y avoir, au moins une différence mineure, dans leurs performances. Ou est-ce que je vois cela à tort? – ABeanSits

+0

Je ne sais pas. Mais je serais surpris si les différences étaient significatives. Dans une implémentation de bas niveau, les deux devraient se résumer à un code très similaire. –