ios animation delegates core-animation

ios - ¿Múltiples CAAnimations para animaciónDidStop método?



delegates core-animation (2)

Puede establecer objetos clave / valor para la instancia de CAAnimation de esta manera:

CABasicAnimation *theAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"]; [theAnimation setValue:@"animation1" forKey:@"id"]; theAnimation.delegate = self; CABasicAnimation *theAnimation2 = [CABasicAnimation animationWithKeyPath:@"opacity"]; [theAnimation2 setValue:@"animation2" forKey:@"id"]; theAnimation2.delegate = self;

Verifique cuál fue llamado en el método de delegado:

- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{ if([[anim valueForKey:@"id"] isEqual:@"animation1"]) { NSLog(@"animation1"); } if([[anim valueForKey:@"id"] isEqual:@"animation2"]) { NSLog(@"animation2"); } }

Sé que tienes que usar este método para obtener el método de delegado para cuando la animación haya terminado:

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

El problema es, ¿cómo distinguiría entre múltiples animaciones de CA como 2 o más?

Busqué en Google y no he encontrado nada útil.

¡Por favor, comparte conmigo sobre cómo lograste esto!

¡Gracias!


Se CAAnimation objeto CAAnimation se reutiliza de vez en cuando y es por eso que no me gusta darle una clave determinada (ya que no es único). Lo que lo hace único es la asociación con un CALayer con addAnimation:forKey: Por esta razón utilizo el siguiente código en animationDidStop :

if animation == layer.animationForKey(AnimationKeys.scaleUp) { // scaleUp animation has completed }