2009-01-01 10 views
5

Mit iPhone CALayer möchte ich eine Rotationsanimation für meine Spirit-Ebene, aber ich möchte auch einen Rückruf für die Animation beenden, heiß das zu tun?Animation Ende Callback für CALayer?

Ich denke, vielleicht sollte ich CABasicAnimation verwenden, aber ich weiß nicht, wie man Rotation mit CABasicAnimation macht, irgendeine Idee?

Dank

Antwort

6

Wenn Sie einen Delegaten für eine CAAnimation einstellen, können Sie die Callback-Methode hinzufügen:

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag 

die aufgerufen wird, wenn die Animation abgeschlossen ist. Geben Sie für Beispiele von Animationen über eine CGAffineTransform Transformationsmatrix drehen, wie pro diesem Link:

http://iphonedevelopment.blogspot.com/2008/10/demystifying-cgaffinetransform.html

3

Als Nebenwirkung, können Sie auch die gleiche Art von einem Rückruf für eine UIView Animation durch Ihren Anruf Einwickeln zu drehen ein UIView in dem folgenden Codeblock

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5f]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(rotationAnimationHasFinished:finished:context:)]; 
// Rotate the view here 
[UIView commitAnimations]; 

und dann einem Delegatmethode

- (void)rotationAnimationHasFinished:(NSString *)animationID finished:(BOOL)finished context:(void *)context; 
{ 
// Handle the completion of the animation 
} 

definierte innerhalb Ihres Delegaten, der nach Abschluss der Animation alles tun wird, was Sie brauchen.