这是我自定义的segue动画代码:
[UIView animateWithDuration:.4 animations:^{
destinationViewController.view.frame = targetFrame;
buttonBarImageView.alpha = 0.0;
} completion:^(BOOL finished) {
[sourceViewController presentViewController:destinationViewController animated:NO completion:nil];
[buttonBarImageView removeFromSuperview];
}];
请注意,在上面的代码中,我NO
animated
传递了presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion
,因为我使用的是自定义动画,并且不想使用任何标准动画。
我的目标视图控制器的方法viewWillAppear:(BOOL)animated
现在应该根据动画标记的不同而有所不同。在VC中,标志决定是否应该播放另外的自己的内部动画。存在各种目标VC并且它们具有不同的内部动画。它们是我上面谈到的自定义动画的补充。
但是,我无法将YES
传递给VC,因为我必须将NO
传递给presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion
,这会导致NO
传递给VC。
如何阻止presentViewController:...
运行动画并仍将YES
传递给VC的viewWillAppear:(BOOL)animated
方法?
答案 0 :(得分:0)
在调用NO
super
传递给[super viewWillAppear:]
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:NO];
//-- your own animation here
}
因此您可以将YES
传递给presentViewController:
,但在将其传递给super
时会覆盖它。
如果这不起作用,我打赌你唯一的机会就是将NO
传递给presentViewController:
并将自己的旗帜添加到视图控制器中,这样你就可以控制它是否是自定义动画。