Dans mon application iPhone, j'ai un UIButton que je fais pivoter de 180 degrés en vue lorsqu'un autre UIButton est pressé, puis lorsque le bouton est de nouveau cliqué, le bouton pivote de nouveau de 180 degrés pour revenir à son point de départ.
Tout fonctionne bien la première fois que le processus complet des 360 degrés se produit, mais si j'essaie de recommencer depuis le début, il tourne de 180 degrés puis essaie de le faire pivoter à partir de ce point. Est-ce que quelqu'un peut me pointer dans la bonne direction? Voici mon code jusqu'à présent...
showAnimation= [CAKeyframeAnimation animationWithKeyPath="transform.rotation"];
showAnimation.duration = self.showAnimationDuration;
showAnimation.repeatCount = 1;
showAnimation.fillMode = kCAFillModeForwards;
showAnimation.removedOnCompletion = NO;
showAnimation.cumulative = YES;
showAnimation.delegate = self;
float currentAngle =[[[rotateMe.layer presentationLayer] valueForKeyPath="transform.rotation.z"] floatValue];
//Faire pivoter de 180 degrés par rapport à la rotation actuelle
showAnimation.values = [NSArray arrayWithObjects=
[NSNumber numberWithFloat:currentAngle],
[NSNumber numberWithFloat:currentAngle + (0.5 * M_PI)],
[NSNumber numberWithFloat:currentAngle + M_PI], nil];
[rotateMe.layer addAnimation:showAnimation forKey="show"];
À la fin de l'animation, je mets à jour la rotation de transform de rotateMe afin qu'elle devienne utilisable.
- (void)animationDidStop:(CAKeyframeAnimation *)anim finished:(BOOL)flag
{
float currentAngle =[[[self.layer presentationLayer] valueForKeyPath="transform.rotation.z"] floatValue];
NSLog="End: %f", currentAngle;
rotateMe.transform = CGAffineTransformMakeRotation(0);
}
J'ai obtenu l'effet entièrement fonctionnel avec
[UIView animateWithDuration=1.0f]
animations:^{
CGAffineTransform transform = CGAffineTransformRotate(rotateMe.transform, DEGREES_TO_RADIANS(179.999f));
rotateMe.transform = transform;
}
];
Mais je voudrais rendre l'animation plus complexe, d'où la CAKeyframeAnimation.