我正在使用iOS7中引入的UIViewController动画转换。我能够通过segue等方式来回产生一些非常好的转换效果。
请看下面的图片:
如果只是一个segue/vc,我可以非常容易地来回切换。例如,如果我从屏幕1到屏幕2,动画效果就很完美。然后,如果我返回到1或前进到3,它也能完美地工作。
但是,如果你注意到屏幕4底部有一个名为“Back To Screen 1”的按钮——这是一个到屏幕1的反向segue。问题是,我无法使转换动画起作用。实际上,委托方法从未被调用过。
以下是我的设置方式(例如从屏幕2到3的动画):
请看下面的图片:
![enter image description here](https://istack.dev59.com/adixA.webp)
但是,如果你注意到屏幕4底部有一个名为“Back To Screen 1”的按钮——这是一个到屏幕1的反向segue。问题是,我无法使转换动画起作用。实际上,委托方法从未被调用过。
以下是我的设置方式(例如从屏幕2到3的动画):
//This is found in screen 2's view controller .m
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"screen2to3"]) {
UIViewController *destination = segue.destinationViewController;
destination.transitioningDelegate = self;
destination.modalTransitionStyle = UIModalPresentationCustom;
}
}
- (id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source {
STSlideAnimation *animator = [STSlideAnimation new];
animator.presenting = YES;
return animator;
}
- (id<UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed {
STSlideAnimation *animator = [STSlideAnimation new];
return animator;
}
//This is the unwinding segue action
-(IBAction)returnToScreen2:(UIStoryboardSegue *)segue{
}
无论是从屏幕3返回到屏幕2,还是从屏幕2返回,都能完美地运行该动画。这个动画可以双向调用。然而,当一次返回多个vc时,我无法让任何动画工作。有什么想法吗?如果需要更多示例代码,请告诉我。
destination.modalTransitionStyle = UIModalPresentationCustom;
,请尝试改用destination.modalTransitionStyle = UIModalPresentationFullScreen;
。 - Mike Pollard