J'ai eu quelques problèmes avec l'animation de plusieurs CALayers en même temps, et j'espérais que quelqu'un pourrait me diriger dans la bonne direction.CALayer: rappel à la fin de l'animation?
Mon application contient un tableau de CALayer. La position de chaque couche est définie sur (previousLayer.position.y + previousLayer.bounds.height)
, ce qui les définit essentiellement comme une table. J'ai alors une méthode qui, chaque fois qu'on l'appelle, ajoute une nouvelle couche à la pile et définit sa position Y à 0. Les positions Y de toutes les autres couches du tableau sont alors compensées par la hauteur du nouveau. couche (poussant essentiellement toutes les vieilles couches vers le bas). Ce qui me pose problème, c'est d'empêcher l'ajout de nouveaux calques jusqu'à la fin de l'animation précédente.
Existe-t-il un moyen de savoir quand une animation implicite est terminée? Ou bien, si j'utilise CABasicAnimation
et animationDidFinish
, est-il possible de dire quel objet a fini d'animer quand animationDidFinish
est appelée?
Cela a fonctionné principalement. Le code est appelé, et je peux récupérer l'objet layer à partir de la clé. Mais j'éprouve un effet de scintillement lorsque j'essaie de placer layer.position à la position à laquelle le calque est supposé être à la fin de l'animation. Il semble que l'animation se termine et que la position de la couche soit rétablie à la position d'origine avant que mon 'layer.position =' soit appelé. Une idée de comment je peux contourner ça? – carloe
Oui. Si vous voulez définir la propriété position à la fin de l'animation, vous devrez désactiver l'animation implicite dans une transaction de votre méthode -animationDidStop: finished:. Je mettrai à jour ma réponse avec le code pertinent. –
Le code que vous avez posté est identique à ce que j'avais et a causé des scintillements. J'ai juste compris comment contourner cela et posterai le code en une seconde. Merci pour votre aide! – carloe