动画准备就绪时做点什么。

时间:2010-04-07 09:04:33

标签: iphone cocoa-touch

我在基于导航的应用程序中有一个动画。

[UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:1.5];
        [UIView setAnimationBeginsFromCurrentState:YES];
        [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown 
                                       forView:self.view cache:YES];        
        [UIImageView commitAnimations];

直接在这段代码之后我打电话给

[self.navigationController popViewControllerAnimated:NO];

问题是,我不希望在动画准备好之前弹出我的ViewController。

2 个答案:

答案 0 :(得分:2)

设置动画委托和didStop选择器,并在您指定的didStop方法中弹出视图控制器:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];

[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown 
                                       forView:self.view cache:YES];        
[UIImageView commitAnimations];

请注意,didStop选择器必须采用docs中指定的格式(有关详细信息,请参阅文档中的+ setAnimationDidStopSelector方法):

  

选择器应采用以下形式: -   (空隙)animationDidStop:(的NSString   *)animationID完成:(NSNumber *)完成上下文:(void *)context。

答案 1 :(得分:1)

您可以设置在动画结束时调用的选择器:

[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];

在那个选择器中调用pop视图控制器。

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {

       // Pop the controller now
    }