按下另一个视图控制器时,根视图控制器的视图会消失

时间:2014-02-26 09:10:22

标签: ios objective-c cocoa-touch ios7

我正在尝试在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视图控制器的视图似乎消失了,因此模式演示背后的背景在转换运行时变为黑色。

此图片说明了问题: enter image description here

当转换完成后,洋红色视图按预期可见,但在转换发生时绿色背景消失。

2 个答案:

答案 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];