隐藏UINavigationBar但仍显示状态栏

8
如何在不隐藏状态栏的情况下隐藏应用程序中的导航栏?当我尝试使用[self.navigationController.navigationBar setHidden:YES];时,它也会隐藏状态栏。我需要像这样显示状态栏:enter image description here。我需要首先隐藏可见的导航栏,使状态栏仍然可见,并且我还有一个视图需要移动到状态栏下面,但是当我将帧的位置设置为0,0时,该视图的定位仍然像导航栏仍在那里一样。我将我的状态栏设置为:
[[UIApplication sharedApplication] setStatusBarHidden:NO];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

你在plist中设置了ViewController-Based Status Bar Appearance为Yes吗? - codercat
UIViewControllerBasedStatusBarAppearance = NO;我还有: [[UIApplication sharedApplication] setStatusBarHidden:NO]; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; - SleepNot
这个链接可能会帮助你解决这个问题 - https://dev59.com/PGMk5IYBdhLWcg3w2RaS - RAJA
3个回答

1
在您想要隐藏导航栏的代码中添加以下内容:
[self.navigationController.navigationBar setHidden:YES];

请检查您的接口文件是否正确设计。 - Rose
1
我尝试了这个方法,但它也隐藏了状态栏。我想要的是至少在Facebook中的效果,当导航栏被隐藏时,状态栏仍然具有有色背景。 - SleepNot
调用[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent]; - Rose

0
如果您想隐藏导航栏但显示状态栏,应将顶部空间设置为顶部布局指南为0,而不是-44。然后在viewWillAppear中调用以下方法:在viewDidLoad中隐藏导航栏[self.navigationController setNavigationBarHidden:YES animated:YES] 我曾经将顶部空间设置为-44,然后调用[[UIApplication sharedApplication] setStatusBarHidden:NO]方法,但它没有起作用。

0
在我的情况下,状态栏文本和符号没有显示出来,因为它们与背景颜色(黑色)相同。我通过改变背景颜色解决了这个问题:
[self.navigationController.navigationBar.superview setBackgroundColor:UIColor.whiteColor];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接