2010-07-20 8 views
7

Ich Animieren eine UIImage Ansicht mit diesem CodeCATransform3DRotate und UIImageView

CABasicAnimation *animation; 
animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; 
animation.duration = 1; 
animation.toValue = [NSNumber numberWithFloat:M_PI]; 
animation.fromValue = [NSNumber numberWithInt:0]; 
[square.layer addAnimation:animation forKey:@"rotation"]; 

Alle funktioniert gut, aber meine Array am Ende der Animation seine ursprüngliche Position einnehmen. Ich sah in die Schichteigenschaften und gefunden:

[square.layer setTransform:CATransform3DRotate(HERE, -M_PI, 0, 0, 0)]; 

Und ich weiß nicht, was an Stelle von „hier“ zu schreiben. Kannst du mir bitte helfen? Vielen Dank!

Antwort

3

CATransform3DRotate() nimmt als ersten Parameter eine Transformation an, auf die eine Drehung angewendet wird. Wenn Sie die Transformation Ihrer Schicht zu drehen suchen, würden Sie

[square.layer setTransform:CATransform3DRotate(square.layer.transform, -M_PI, 0, 0, 0)]; 

Das heißt, wenn das Problem, das Sie haben, ist, dass die Schicht zuckt zurück in die Ausgangsposition am Ende der Animation, die alle Sie müssen die removedOnCompletion-Eigenschaft der Animation auf NO und ihre fillMode-Eigenschaft auf kCAFillModeForwards setzen.

+0

Thnaks viel Brad! – Pierre