2014-09-01 1 views
0

Je veux créer un bouton rotatif qui peut être tourner de mes points donnés j'ai essayé cela, mais il donne des angles et je veux donner des pointsBouton Rotation ou l'image d'un point à un autre

self.theImageView.transform=CGAffineTransformMakeRotation (angle); 
     angle=30; 

J'ai aussi essayé mais il a le même problème

CABasicAnimation *halfTurn; 
    halfTurn = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; 
    halfTurn.fromValue = [NSNumber numberWithFloat:0]; 
    halfTurn.toValue = [NSNumber numberWithFloat:((90*M_PI)/360)]; 
    halfTurn.duration = 1; 
    halfTurn.repeatCount = false; 
    [[button layer] addAnimation:halfTurn forKey:@"180"]; 

quelqu'un peut-il être ou un code suggèrent donner snippiest merci à l'avance

Répondre

0

Si vous voulez vouloir donner deux points et faire pivoter votre vue autour de ces deux points, il y a un piège. Vous devez veiller à ce que ces deux points soient équidistants de l'ancre de rotation. Vous pouvez calculer l'angle d'arc d'une telle rotation et la régler en conséquence.

Vous pouvez trouver la longueur de l'arc ici:

Vous pouvez trouver la formule pour trouver l'angle d'arc, dans ce lien: http://www.regentsprep.org/Regents/math/algtrig/ATM1/arclengthlesson.htm

Modifier

Je suis maintenant étant donné une prémisse qu'il y a 7 boutons disposés circulairement autour d'un point d'ancrage. Ce que vous faites maintenant, est de maintenir une variable de niveau de l'instance appelée currentAngle et l'initialiser à 0.

CGFloat nextAngle = currentAngle + (360/7); 
CABasicAnimation *halfTurn; 
    halfTurn = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; 
    halfTurn.fromValue = [NSNumber numberWithFloat:((currentAngle*M_PI)/360)]; 
    halfTurn.toValue = [NSNumber numberWithFloat:((nextAngle*M_PI)/360)]; 
    halfTurn.duration = 1; 
    halfTurn.repeatCount = false; 
    [[button layer] addAnimation:halfTurn forKey:@"clock_wise_rotation"]; 
currentAngle = nextAngle; 

Le code ci-dessus est pour la rotation des aiguilles d'une montre. Si vous voulez effectuer une animation dans le sens inverse des aiguilles d'une montre, vous devez soustraire 360/7 et effectuer l'animation.

+0

J'ai 7 boutons en cercles et au centre il y a un pointeur. Je veux déplacer le pointeur sur le bouton avec Animation sur lequel on clique. Dans ce scénario, quelle approche dois-je utiliser. – zohaibkhan

+1

La différence d'angle entre chacun de ces points sera 360/7. Faites cette animation, pour passer d'un angle à l'autre. Conserve une variable qui vous indique la position de l'angle actuel. Et ajouter ou soustraire 360/7 degrés en fonction de la direction du mouvement. – avismara

+0

comment puis-je ajouter une animation à cette rotation. s'il vous plaît donnez un peu de code si possible – zohaibkhan

Questions connexes