带有可见导航栏的视图控制器弹出带有隐藏导航栏的视图控制器时带有interactivePopGestureRecognizer的黑色区域

时间:2014-03-16 20:00:17

标签: ios iphone uinavigationcontroller interactivepopgesture

我有一个ViewController#1,它是导航控制器的根视图控制器,有

self.navigationController.navigationBarHidden = YES;

ViewController#1告诉其导航控制器推送ViewController#2,它有

self.navigationController.navigationBarHidden = NO;

当我想通过从屏幕左侧滑动从ViewController#2返回到ViewController#1时,我会看到我的视图作为我附加的屏幕截图。当我向右移动手指时捕捉到这一点,因此当我向右滑动时,右上方的黑色区域变得越来越小,直到ViewController#1覆盖了所有屏幕区域。

我猜这是由两个视图控制器之间的隐藏/可见导航栏差异引起的。

我想了解是否有可能摆脱这个黑色区域。

enter image description here

2 个答案:

答案 0 :(得分:11)

正如HoanNguyen所讨论的那样,我已经将我的代码隐藏/显示在viewWillAppear / Disappear上的导航栏,但最后我发现诀窍是将值设置为动画。很奇怪,但这解决了我的问题,黑色区域现在已经消失了:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:self.shouldHideNavBar animated:animated];
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:!self.shouldHideNavBar animated:animated];
}

答案 1 :(得分:3)

您应该将您的代码集隐藏/显示在viewWillAppear或viewDidAppear中。