3

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

self.navigationController.navigationBarHidden = YES;

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

self.navigationController.navigationBarHidden = NO;

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

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

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

在此处输入图像描述

4

2 回答 2

14

正如与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];
}
于 2014-03-20T05:15:43.690 回答
3

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

于 2014-03-17T02:00:45.323 回答