如何隐藏 UINavigationBar

Posted

技术标签:

【中文标题】如何隐藏 UINavigationBar【英文标题】:How to Hide UINavigationBar 【发布时间】:2012-10-20 20:22:41 【问题描述】:

是否可以放置覆盖导航栏的视图(对象)?我根本放不下。它总是隐藏在导航下。吧。

【问题讨论】:

这与 Xcode 无关。已编辑。 【参考方案1】:

我不建议尝试覆盖您的导航栏,因为它的存在是有原因的。但是,要完全隐藏它,您可以向导航控制器发送 setNavigationBarHidden:animated: 方法。

【讨论】:

【参考方案2】:

您可以在其中一个 viewController 的 viewDidLoad 中执行以下操作:

- (void)viewDidLoad 

    [super viewDidLoad];
    UIView* navigationBarCover = [[UIView alloc] initWithFrame:self.navigationController.navigationBar.frame];
    navigationBarCover.backgroundColor = [UIColor blackColor];
    [self.navigationController.view addSubview:navigationBarCover];

你也可以隐藏navigationBar,把视图放到viewControllers视图上:

- (void)viewDidLoad 

    [super viewDidLoad];
    [self.navigationController setNavigationBarHidden:YES animated:NO];
    UIView* navigationBarCover = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    navigationBarCover.backgroundColor = [UIColor redColor];
    [self.view addSubview:navigationBarCover];

【讨论】:

这回答了 OP,但请不要这样做。非常糟糕的事情TM。【参考方案3】:

如果您的UIViewControllerUITabBarController 下,则在调用viewDidLoad 之前不会设置[self navigationController],因为在选择其相应的选项卡之前不会确定其布局。到那时,[self navigationController] 的状态可能已经被 ios 更改了,因此导航栏再次可见。

对于影响视图布局的更改,最好在UIViewController 方法viewDidLayoutSubviews 中执行这些操作。在UIViewController 执行中的哪一点,[self navigationController] 将始终设置(如果有),并且 iOS 不会进一步更改其状态。

viewDidLoad 理想情况下应该只用于实例化视图的内容,而不是在布局中定位它们。由于更改导航栏的可见性会影响视图的布局,因此在 viewDidLoad 内设置其可见性可能会导致未定义的行为。

- (void) viewDidLayoutSubviews 
    [super viewDidLayoutSubviews];
    [[self navigationController]
        setNavigationBarHidden:YES
        animated:NO];

【讨论】:

以上是关于如何隐藏 UINavigationBar的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL中如何显示隐藏项

安卓手机如何隐藏应用图标?

Mac 教程系列Mac 如何显示隐藏文件以及如何隐藏文件?

如何隐藏android app图标

如何隐藏和取消隐藏 XtraTabControl 的页面?

如何设置一个隐藏的div