2009-10-12 4 views
1

Je fais pivoter une vue de 45 degrés à chaque déplacement. Voici mon code. Le problème ici est que la vue est tournée seulement une fois. Après cela, il n'y a pas de rotation. Quelle sera la raison? Toute aideAfficher la rotation dans les touches Déplacé

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
     CGContextRef context = UIGraphicsGetCurrentContext(); 
     [UIView beginAnimations:nil context:context]; 
     [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
     [UIView setAnimationDuration:0]; 
     dialView.transform = CGAffineTransformMakeRotation(45* M_PI/180); 
     [UIView commitAnimations]; 
    } 

Répondre

0

La rotation est toujours relative à 0. Si vous tournez à x plusieurs fois, elle ne tournera que la première fois. Si vous voulez faire tourner 45 chaque fois que vous appelez ce code, vous aurez besoin d'avoir contre et il ressemblerait à ceci:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    step++;//You are supposed to keep this variable global. 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [UIView beginAnimations:nil context:context]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:0]; 
    dialView.transform = CGAffineTransformMakeRotation(45*step* M_PI/180); 
    [UIView commitAnimations]; 

}

1

Vous pouvez également utiliser CGAffineTransformRotate pour tourner de son présent transform, comme dans:

dialView.transform = CGAffineTransformRotate(dialView.transform, 45 * M_PI/180); 
Questions connexes