2010-06-30 5 views
2

J'utilise une animation de base pour faire la transition entre différents états d'affichage dans mon application. Cependant, j'ai besoin de trouver un moyen d'effectuer différentes tâches après la fin des animations. Je comprends que je peux mettre en œuvre une méthode déléguée et utiliser leCallbacks d'animation de base

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag; 

rappel, mais il n'y a aucun moyen facile de garder une trace dont l'animation se termine.

Je peux penser à des solutions fastidieuses, comme l'utilisation d'une série de drapeaux et de compteurs, mais je me demande s'il existe une méthode plus efficace et plus pratique pour contourner ce problème.

Que pensez-vous?

Répondre

7

Utilisez la méthode setValue:ForKey pour attribuer un nom unique à chaque animation.

[animation setValue:@"myUniqueName" forKey:@"name"]; 

Plus tard, dans l'utilisation de la méthode de animationDidStop que pour savoir qui l'animation arrêté

-(void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finished { 
    if([[theAnimation valueForKey:@"name"] isEqual: @"myUniqueName"] && finished){ 
       //code 
    } 
    if([[theAnimation valueForKey:@"name"] isEqual: @"otherName"] && finished){ 
     //code 
    } 
} 
+0

merci parfait! –