我在基于导航的应用程序中有一个动画。
[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。
答案 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
}