CALayer l'opacité de l'animation
Je veux créer un CALayer animation qui donne une sorte de 'flashy' effet. Pour cela, je vais essayer d'animer le 'opacité' bien, mais mon problème est que je n'ai aucune idée par où commencer et comment le faire.
Voici un graphique de l'explication de l'animation:
opacity
| ___
1 | | |
| | | * repeatCount
0 |___| |_ . . .
-------------------------> time
|______|
duration
L'opacité commence à 0, puis s'anime à 1, alors 0 (ce qui de 0 à 1 à 0 de l'animation prend un certain nombre de secondes égale à la durée). Ensuite, ce processus est répété 'repeatCount" fois.
Voici quelques informations sur le code:
float duration = ...; //0.2 secs, 1 sec, 3 secs, etc
int repeactCount = ...; //1, 2, 5, 6, ect
CALayer* layer = ...; //I have a CALayer from another part of the code
layer.opacity = 0;
//Animation here
done = YES; //IN THE END of the animation set this ivar to yes
Quelle est la meilleure façon d'accomplir cette? Je n'ai jamais utilisé CALayers avant, donc c'est aussi une bonne occasion d'apprendre comment leur système d'animation de travaux. En passant, j'ai cherché dans la doc et je comprends comment vous ajoutez un ou deux animations simples, mais je n'ai aucune idée de comment faire cela en particulier.
- upvote pour le graphique XD
Vous devez vous connecter pour publier un commentaire.
Le meilleur moyen pour y parvenir est l'utilisation explicite de l'animation (voir guide) par la création d'une instance de
CABasicAnimation
et de l'ajouter à la couche.Le code devrait ressembler à quelque chose comme ceci:
Si vous souhaitez savoir quand l'animation est terminé, vous pouvez définir un délégué et de mettre en œuvre la
animationDidStop:finished:
méthode, cependant il est préférable d'utiliser un achèvement bloc qui permet à tous le code pour être à la même place. Si vous écrivez pour iOS 4 ou OS X, vous pouvez utiliser l'excellent CAAnimationBlocks catégorie pour accomplir cette tâche.Trojanfoe la réponse est excellente. Je veux juste ajouter que si vous voulez plus de contrôle sur la "timeline" (combien de temps faut-il à s'estomper? combien de temps doit-on attendre? puis combien de temps devrait-il fondu? et ainsi de suite), vous allez avoir à combiner plusieurs
CABasicAnimation
s dans un CAAnimationGroup.Vous pourriez vouloir lire mon chapitre de livre sur ce sujet, la dernière partie de ce qui constitue un tutoriel sur la CAAnimation et sa descendance:
http://www.apeth.com/iOSBook/ch17.html#_core_animation
Remarque que mon analyse est réalisé à iOS; sur Mac OS X, si c'est là où vous êtes, de la vue ou de la couche de l'architecture est un peu différent, mais ce qu'il dit à propos de CAAnimation est toujours correcte.