【发布时间】:2012-03-08 03:26:36
【问题描述】:
我有一个自定义 segue 动画,当将新视图控制器推入堆栈时会发生这种动画。然而,当弹出带有所述自定义 segue 的视图控制器时,会发生默认导航控制器动画(即,当前视图控制器动画向右,而父视图控制器从左边缘在屏幕上平移)。
所以我的问题是:有没有办法编写一个自定义的弹出 segue 动画,当从堆栈中弹出视图控制器时会发生这种动画?
编辑(解决方案):
我最终定义了一个类似于所选答案的自定义 segue。在 Storyboard 中,我将自定义 segue 从子视图控制器拖回其父级,给它一个标识符,并将新编写的反向 segue 作为其类。是的,我意识到它实际上与模态转换相同。客户要求需要这种疯狂,所以在任何人开始之前,请理解我知道在正常情况下不应该这样做。
- (void)perform {
UIViewController *src = (UIViewController *)self.sourceViewController;
UIViewController *dest = (UIViewController *)self.destinationViewController;
[UIView animateWithDuration:0.3 animations:^{
CGRect f = src.view.frame;
f.origin.y = f.size.height;
src.view.frame = f;
} completion:^(BOOL finished){
src.view.alpha = 0;
[src.navigationController popViewControllerAnimated:NO];
}];
}
【问题讨论】:
-
所以要明确一点,您实际上是在反转自定义转场,而是使用单独的自定义转场返回?
-
通过使用 segue 循环回自身,您是否还在不必要地创建原始视图控制器的另一个实例?我想除了内存配置文件中的一个短暂的亮点外,没有人会注意到。 :)
标签: objective-c ios storyboard reverse segue