Core Animation est une bonne solution pour ce genre de chose. Vous avez CAShapeLayer qui vous permet de dessiner des formes en fonction d'un chemin et vous pouvez animer en utilisant une animation de base ou une animation d'image clé. Vous pouvez faire quelque chose comme ceci dans votre bouton clic:
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
[animation setFromValue:[NSValue valueWithCGPoint:CGPointMake(0.0, 0.0)]];
[animation setToValue:[NSValue valueWithCGPoint:CGPointMake(320.0, 480.0)]];
[animation setDuration:2.0f];
[shapeLayer addAnimation:animation forKey:@"positionAnimation"];
Cette animerez la couche du point 0,0, 0,0 (coin supérieur gauche) à 320,0, 480,0 (coin inférieur droit) au cours de deux secondes . Lorsque vous ajoutez l'animation à votre calque, la lecture commence immédiatement. Si vous cherchez à faire pivoter l'animation (était pas sûr du poste), vous pouvez le faire:
CABasicAnimation *rotationAnimation;
rotationAnimation = [CABasicAnimation
animationWithKeyPath:@"transform.rotation.z"];
[rotationAnimation setFromValue:DegreesToNumber(0)];
[rotationAnimation setToValue:DegreesToNumber(360)];
[rotationAnimation setDuration:2.0f];
[rotationAnimation setRepeatCount:10000]; // keep spinning
[shapeLayer addAnimation:rotationAnimation forKey:@"rotate"];
Le DegreesToNumber est une fonction d'aide qui convertit des degrés en radians et renvoie un objet NSNumber:
CGFloat DegreesToRadians(CGFloat degrees)
{
return degrees * M_PI/180;
}
NSNumber* DegreesToNumber(CGFloat degrees)
{
return [NSNumber numberWithFloat:
DegreesToRadians(degrees)];
}
Il y a beaucoup d'articles sur le web sur Core animation, mais cela devrait vous aider à démarrer. Faites-moi savoir si vous avez besoin d'éclaircissements.
Merci Matt, je vais le tester et vous laisser savoir comment ça se passe. – Mustafa