Estoy tratando de aprender core-animation para iOS/iPhone. Mi capa de raíz contiene muchas subcapas (sprites) y deben girar cuando se eliminan ...Cómo eliminar un objeto CALayer de animationDidStop?
Mi plan era añadir una animación de giro y luego eliminar el elemento cuando se invoca animationDidStop. ¡El problema es que la capa de sprites no es un parámetro para animationDidStop!
¿Cuál es la mejor manera de encontrar la capa de sprite específica de animationDidStop? ¿Hay alguna manera mejor de hacer que el sprite gire cuando se elimina? (Idealmente me gustaría utilizar kCAOnOrderOut pero no pude hacer que funcione)
-(void) eraseSprite:(CALayer*)spriteLayer {
CABasicAnimation* animSpin = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
animSpin.toValue = [NSNumber numberWithFloat:2*M_PI];
animSpin.duration = 1;
animSpin.delegate = self;
[spriteLayer addAnimation:animSpin forKey:@"eraseAnimation"];
}
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag{
// TODO check if it is an eraseAnimation
// and find the spriteLayer
CALayer* spriteLayer = ??????
[spriteLayer removeFromSuperlayer];
}
Esta debería ser la respuesta, ya que la aceptada no funciona en múltiples sprites como la pregunta planteada. – Ian1971
+1 respuesta correcta ... – Leena
Bien, ahora he comprobado esta respuesta como la correcta. – ragnarius