2010-07-28 7 views
2

ce que je veux faire:iPhone, Comment faire pivoter un UIImageView autour d'un point en utilisant Core Animation et CATransform3D?

(1) (2) 
| /
| /
|/
|/
|/ 
* 
(3) 

Je souhaite déplacer un UIImageView représenté par une broche d'horloge (largeur: 9px, 73px la hauteur) de la position (1) à la position (2) autour du point (3) qui est une extrémité de l'image. J'ai essayé de définir le point d'ancrage sur (0,0) ou de positionner le centre de l'image sur le point (517,177) sur l'écran de l'iPad, mais je n'ai pas réussi:

Ma macro degreeToRadians est définie de la manière suivante:

#define degreesToRadian(x) (M_PI * (x)/180.0) 

/* kmPointer est le UIImageView */

NSValue *value = nil; 
CABasicAnimation *animation = nil; 
CATransform3D transform; 
kmPointer.layer.anchorPoint = CGPointMake(0, 0); 
[kmPointer.layer removeAllAnimations]; 
animation = [CABasicAnimation animationWithKeyPath:@"transform"]; 
transform = CATransform3DMakeRotation(degreesToRadian(30), 0.0f, 0.0f, 1.0f); 
value = [NSValue valueWithCATransform3D:transform]; 
[animation setToValue:value]; 
transform = CATransform3DMakeRotation(0.0f, 0.0f, 0.0f, 1.0f); 
value = [NSValue valueWithCATransform3D:transform]; 
[animation setFromValue:value]; 
[animation setAutoreverses:NO]; 
[animation setDuration:1.0f]; 
[animation setRepeatCount:1]; 
[kmPointer.layer addAnimation:animation forKey:nil]; 

Comment puis-je faire le pointeur de tourner autour de l'étoile marquée par (3)?

+0

Etes-vous sûr que le point d'ancrage est (0,0)? Je pense que c'est en haut à gauche, pas en bas à gauche. – jtbandes

+1

J'ai lu toutes ces choses http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/Layers.html J'ai essayé toutes les combinaisons, (0,5, 0,0), (0,0, .5), (1, 0), (1, 1) et je n'obtiens toujours pas l'effet désiré. Lorsque je mets le point d'ancrage (1,1) mon pointeur monte sur l'écran de 50 pixels et tourne à droite autour du nouveau point (3). – andreiursan

Répondre

4

Les documents Apple qui montrent l'image du point d'ancrage sont pour OSX. Voici à quoi il ressemble pour iOS: alt text http://img.skitch.com/20100728-8ggje4xr8jixa7c2gam96npc9g.png

Essayez donc de régler votre point d'ancrage sur 0.0, 1.0.

+0

cela fonctionne partiellement, parce que la rotation est faite correctement mais avant que l'animation soit commencée l'image se déplace à un autre endroit sur l'écran. Je pense que je dois définir des limites. De toute façon je suis allé avec une autre approche, parce que l'image tournait correctement autour du centre, j'ai maximisé l'image de telle sorte que le centre est le fond de la broche. – andreiursan

Questions connexes