2009-12-08 12 views
5

Estoy tratando de realizar algún tipo de animación de una capa en mi aplicación de iPhone. No importa lo que haga, siempre obtengo los mismos resultados: una vez realizada la animación, vuelve a su posición original. Aunque configuré removedOnCompletion como falso, no hay diferencia.¿Cómo es que mi transformación de Core Animation siempre regresa a su estado de inicio?

¿Qué me falta aquí?

¡Gracias de antemano!

EDITAR: Realmente necesito ayuda con este chico. Estoy creando animaciones con objetos CAKeyframeAnimation y CABasicAnimation, y luego los agrego a un CAAnimationGroup que a su vez atiendo a la capa. La animación funciona como se predijo, excepto que siempre vuelve a su estado original. Este es el caso aunque configuré removedOnCompletion = NO; en todos los objetos de animación y en el grupo de animación.

¡Alguna persona, por favor, apúnteme en la dirección correcta! Si usted vive en el área de Estocolmo, le compraré un café. =) Nuevo código publica a continuación:

CABasicAnimation *leveloutLeafAnimation = [CABasicAnimation animationWithKeyPath:@"transform"]; 
leveloutLeafAnimation.removedOnCompletion = NO; 
leveloutLeafAnimation.duration = 1.0; 
leveloutLeafAnimation.repeatDuration = 20; 
CATransform3D transformLeafToRotation = CATransform3DMakeRotation(0.0, 0.0, 0.0, 1); 
CATransform3D transformLeafFromRotation = CATransform3DMakeRotation([self _degreesToRadians:270.0], 0.0, 0.0, 1); 
leveloutLeafAnimation.fromValue = [NSValue valueWithCATransform3D:transformLeafFromRotation]; 
leveloutLeafAnimation.toValue = [NSValue valueWithCATransform3D:transformLeafToRotation]; 

//Create an animation group to combine the animations. 
CAAnimationGroup *theAnimationGroup = [CAAnimationGroup animation]; 

//The animationgroup conf. 
theAnimationGroup.delegate = self; 
theAnimationGroup.duration = animationDuration; 
theAnimationGroup.removedOnCompletion = NO; 
theAnimationGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 
theAnimationGroup.animations = [NSArray arrayWithObjects:leveloutLeafAnimation, leafMoveAnimation, nil]; 

// Add the animation group to the leaf layer. 
[leafViewLayer addAnimation:theAnimationGroup forKey:@"animatLeafFalling"]; 

Respuesta

3

No estoy seguro si esto es útil, pero this guy parece como si estuviera teniendo un problema similar.

Es posible que tenga que establecer la propiedad transform de la capa mientras la animación se ejecuta en transformLeafToRotation.

¡Buena suerte!

+0

Muchas gracias Frank Schmitt! Tu eres el hombre. theAnimationGroup.fillMode = kCAFillModeForwards; Fue la llave Si vienes por Estocolmo, te debo un café. =) – ABeanSits

Cuestiones relacionadas