我试图在我的UINavigationController
的根视图控制器上推UIViewController
。我正在做一个自定义转换,使它看起来像一个模态演示。推送另一个视图控制器时,根视图控制器的视图消失
CATransition* trans = [CATransition animation];
trans.type = kCATransitionMoveIn;
trans.subtype = kCATransitionFromTop;
trans.duration = 0.4f;
trans.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[self.navigationController.view.layer addAnimation:trans forKey:nil];
[self.navigationController pushViewController:vc animated:NO];
我的问题是,该self
视图控制器的观点似乎当我推到消失,因此而转变运行模式,呈现后面的背景变成了黑色。
此图片说明了这个问题:
当transtition完成品红视图预期是可见的,但在发生转变的绿色背景会消失。
这是正确的。 UINavigationController以这种方式工作,当您在不使用动画的情况下推新视图控制器时,它立即显示新视图并隐藏先前视图。 有两种正确的方法来完成它: 1)使用新的自定义转换协议, 2)创建自己的容器视图控制器,而不是使用uinavigationcontroller。这个新容器将负责更改和动画子视图控制器。 – pjanecze