我正在尝试在UIViewController
的根视图控制器上推送UINavigationController
。我这样做是为了使它看起来像一个模态演示。
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
视图控制器的视图似乎消失了,因此模式演示背后的背景在转换运行时变为黑色。
此图片说明了问题:
当转换完成后,洋红色视图按预期可见,但在转换发生时绿色背景消失。
答案 0 :(得分:2)
由于您使用的是iOS 7,因此您应该使用新的自定义转换协议来处理此问题,而不是自己动画图层。问题是导航控制器会在您调用push时立即更新视图模型,因为您告诉它不要设置动画,从屏幕中删除以前的视图 - 可能还有视图层次结构。
答案 1 :(得分:0)
试试这个,
CATransition *animation = [CATransition animation];
[animation setDuration:0.40];
[animation setType:kCATransitionReveal];
[animation setSubtype:kCATransitionFromBottom];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[navController.view.layer addAnimation:animation forKey:nil];
[navController pushViewController:viewController animated:NO];