2009-09-10 5 views
0

Comment arrêter la rotation d'un CALayer personnalisé sur l'iPhone?Arrêt en douceur de la rotation d'une animation de base

Ce

CATransform3D pausetransform = ((CALayer *)[layer presentationLayer]).transform; 
[layer removeAllAnimations]; 
layer.transform = pausetransform; 

arrête l'animation, puis tourne immédiatement la couche arrière un peu. Probablement parce que, après la définition de la valeur Pausetransform, l'animation continue pendant un petit moment.

La définition de la valeur layer.transform dans la méthode de délégation - (void) animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finishednormally de l'animation affiche brièvement la couche dans la position de départ de l'animation avant qu'elle ne pivote vers la position correcte.

Répondre

1

Il s'est avéré que l'UIActionSheet I était en cours d'installation lorsque l'appel [layer removeAllAnimations] a pris si longtemps pour afficher qu'il retardait l'arrêt réel de l'animation. En déplaçant la configuration de la feuille UIActionSheet à la méthode déléguée - (void) animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finishednormally, la rotation s'arrête maintenant en douceur.

0

Une autre façon est d'appeler

[view.layer removeAnimationForKey:@"name of your animation"]; 

Cependant, dans les deux Enlève, selon la façon dont vous configurez l'animation, l'animation se fige à la prochaine itération de l'animation. Si, disons, vous tourniez par incréments de 10 degrés, l'animation s'arrêterait avant l'incrément de 10 degrés suivant.

+0

J'utilise un CABasicAnimation pour faire pivoter la couche de 360 ​​° une fois. Lorsque je supprime l'animation (à l'aide de removeAllAnimations ou removeAnimationForKey), la couche revient à la rotation dans layer.transform. Mais je ne trouve pas de moyen d'obtenir la rotation de la couche au moment précis où l'animation s'arrête. Je ne peux pas non plus régler la rotation de la couche au moment précis où l'animation s'arrête. Je ne peux le faire juste avant ou juste après, ce qui entraîne des problèmes graphiques. Existe-t-il une autre sous-classe de CAAnimation qui gère mieux cela? – kareman

Questions connexes