如何获取动画结束通知

时间:2012-08-16 10:33:08

标签: iphone objective-c ios xcode

动画结束后,我想做一些动作。

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.80f];
self.view.transform = 
CGAffineTransformMakeTranslation(
                                 self.view.frame.origin.x, 
                                 480.0f + (self.view.frame.size.height/2)  // move the whole view offscreen
                                 );
[self.view setAlpha:0];
[UIView commitAnimations];

我做过上面的动画,如何找到动画结束,以便我可以在那之后做我的动作。

5 个答案:

答案 0 :(得分:7)

使用此:

    [UIView animateWithDuration:0.80f animations:^{
    self.view.transform =
    CGAffineTransformMakeTranslation(
                                     self.view.frame.origin.x,
                                     480.0f + (self.view.frame.size.height/2)  // move the whole view offscreen
                                     );
    [self.view setAlpha:0];
    }
    completion:^(BOOL finished){
        // your code
    }];

答案 1 :(得分:7)

将此添加到动画中:

[UIView setAnimationDidStopSelector:@selector(myAnimationEnded)];
[UIView setAnimationDelegate:self];

并且此方法会告诉您何时停止;

- (void)myAnimationEnded{
     NSLog(@"animation ended");
}

答案 2 :(得分:4)

使用UIView的{​​{1}}类方法。

-animateWithDuration:animations:completion:

答案 3 :(得分:0)

[UIView commitAnimations];之后编写代码。动画保持在beginAnimationscommitAnimations之间。

答案 4 :(得分:0)

不是setAnimationDelegate

  

在iOS 4.0及更高版本中不鼓励使用此方法。如果您使用基于块的动画方法,则可以直接在块中包含代理的开始和结束代码。