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

asl*_*nci 3 iphone uinavigationcontroller ios interactivepopgesture

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

self.navigationController.navigationBarHidden = YES;
Run Code Online (Sandbox Code Playgroud)

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

self.navigationController.navigationBarHidden = NO;
Run Code Online (Sandbox Code Playgroud)

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

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

我想知道是否有可能摆脱这个黑色区域.

在此输入图像描述

asl*_*nci 12

正如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];
}
Run Code Online (Sandbox Code Playgroud)