2011-01-30 8 views

Respuesta

24

CAAnimation (que CATransition es una subclase de) tiene el método delegado animationDidStop:finished: que puede usar.

Establecer la propiedad delegado y poner en práctica el método:

CATransition *transition = [CATransition animation]; 
transition.duration = duration; 
transition.delegate = self; 
//other settings... 
//call addAnimation... 

... 

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag 
{ 
    //do what you need to do when animation ends... 
} 
+0

@Anna una vieja pregunta poco, pero la documentación de Apple dijo 'Una instancia de CAAnimation no debe establecerse como delegado de la misma. Si lo hace (fuera de un entorno recogido de basura) se producirán ciclos de retención. ¿No es esto lo que hace en su respuesta? O estoy equivocado, explica por favor. –

+0

@flinth: No, 'self' se refiere al objeto que está creando' transition', no a 'transition' en sí mismo. Creo que lo que los documentos significan no hacen algo como 'transition.delegate = transition;'. – Anna

+0

@Anna oh, puede que tengas razón, de todos modos, no veo otra forma de implementar esto :) Gracias por explicar –

Cuestiones relacionadas