2010-11-02 9 views
0
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
CGFloat coef = tempCount/20; 
while(tempCount >= 0) 
{ 
    [imgView setTransform: CGAffineTransformRotate([imgView transform], -1*coef)]; 
    tempCount -=coef; 
    [NSThread sleepForTimeInterval: 0.09]; 
} 
} 

Et le problème est que, que mon image sur la vue d'image ne se met à jour qu'après le cycle. Je veux le mettre à jour toutes les 0,09 secondes. Que pouvez-vous proposer? Merci!Mise à jour UIImageView en cours de cycle

+0

Qu'essayez-vous de faire? juste faire pivoter progressivement imageview? – Vladimir

+0

oui, exactement! Je veux montrer sur l'écran une animation lente avec rotation. – yozhik

Répondre

0

Si vous souhaitez faire pivoter une vue avec animation, utilisez les facilités d'animation que le SDK vous fournit. Pour faire pivoter votre vue sur 360 degrés, vous devrez utiliser l'animation principale.

Le code suivant tournera votre point de vue pendant 3 sec:

#import <QuartzCore/QuartzCore.h> 
... 
CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; 
animation.fromValue = [NSNumber numberWithFloat:0.0f]; 
animation.toValue = [NSNumber numberWithFloat: 2*M_PI]; 
animation.duration = 3.0f; 
animation.repeatCount = 1.0f; 
[imgView.layer addAnimation:animation forKey:@"MyAnimation"]; 

Ou essayez ce qui suit - je ne l'ai pas testé le code, mais il devrait Réinitialiser la vue Transformons à l'identité avec l'animation:

[UIView beginAnimations:@"Reset dial" context: nil]; 
[UIView setAnimationDuration: 1.0f]; 
[UIView setAnimationCurve: UIViewAnimationCurveEaseOut]; 

[imgView setTransform:CGAffineTransformIdentity]; 

[UIView commitAnimations]; 
+0

Non. J'essaie de téléphoner avec une ligne commutée. Dans la fonction touchMoved je fais pivoter mon cercle de téléphone vers la droite et quand je suis touchEnd je dois restaurer mon image à l'angle précédent mais avec un peu de retard d'animation. – yozhik