隐藏 UINavigationBar 但仍显示状态栏
Posted
技术标签:
【中文标题】隐藏 UINavigationBar 但仍显示状态栏【英文标题】:Hide UINavigationBar but still show Status Bar 【发布时间】:2014-04-23 17:34:19 【问题描述】:如何通过不在我的应用中隐藏状态栏来隐藏导航栏?当我尝试[self.navigationController.navigationBar setHidden:YES];
时,它也会隐藏状态栏。我需要像这样显示状态栏:
我需要首先隐藏一个可见的导航栏,使状态栏仍然可见,并且我还有一个需要移动到状态栏下方的视图,但是当我定位时,视图的定位就像导航栏仍然存在一样将框架的位置设置为 0,0。
我将状态栏设置为:
[[UIApplication sharedApplication] setStatusBarHidden:NO];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
【问题讨论】:
您是否在 plist 中将基于视图控制器的状态栏设置为隐藏是 不,它是 UIViewControllerBasedStatusBarAppearance = NO;我也有: [[UIApplication sharedApplication] setStatusBarHidden:NO]; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 此链接可能会帮助您解决此问题 - ***.com/questions/18915092/… 【参考方案1】:将此添加到您要隐藏导航栏的代码中
[self.navigationController.navigationBar setHidden:YES];
【讨论】:
请检查您的界面文件是否设计正确。 我试过了,但它也隐藏了状态栏。我想要的是在 Facebook 中至少有这样的效果,当导航栏被隐藏时,状态栏仍然有彩色背景。 调用[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent];【参考方案2】:如果你想隐藏导航栏但显示状态栏,你应该将Top Space to Top Layout Guide设置为0而不是-44。然后
Hide navigation bar in viewWillAppear instead of viewDidLoad:[self.navigationController setNavigationBarHidden:YES animated:YES]
我开始将顶部空间设置为-44,然后调用方法[[UIApplication sharedApplication] setStatusBarHidden:NO]
,它不起作用。
【讨论】:
【参考方案3】:在我的例子中,状态栏文本和符号没有显示,因为它们与背景颜色相同(黑色)。我通过改变背景颜色解决了这个问题:
[self.navigationController.navigationBar.superview setBackgroundColor:UIColor.whiteColor];
【讨论】:
以上是关于隐藏 UINavigationBar 但仍显示状态栏的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationBar 外观 setBackgroundImage 隐藏状态栏
UINavigationBar 的高度错误,因为加载时状态栏被隐藏
UIStatusBar样式与UINavigationBar一致
隐藏 UIStatusBar / 移动 UINavigationBar