不推荐使用setStatusBarHidden,但只能使用它

我已经尝试了所有可以找到的解决方案,包括: 在iOS 9.0中不推荐使用setStatusBarHidden,但它们都不适用于我的应用程序。

它是一个简单的单视图应用程序。 导航栏上有一个按钮,状态栏应显示在其上。

在我的.plist中:

状态栏最初隐藏:NO

状态栏样式:UIStatusBarStyleLightContent

基于视图控制器的状态栏外观:否

改变任何这些似乎都没有任何区别。 我已选中状态栏样式“在应用程序启动期间隐藏”选项,因为我不希望它出现在启动画面上。

我有:

- (BOOL)prefersStatusBarHidden { return NO; } -(UIStatusBarStyle)preferredStatusBarStyle { NSLog(@"style"); return UIStatusBarStyleLightContent; } 

setNeedsStatusBarAppearanceUpdate ,当视图加载到我的ViewController中时,它们肯定都被调用。

视图在.storyboard中建立,但许多字段也在ViewController.m中进行操作。 分配给模拟指标中状态栏的值似乎也没有任何影响。

我需要在启动屏幕中隐藏状态栏并在viewController上显示。 请帮我找一个不使用已弃用的setStatusbarHidden的解决方案!

编辑:

我还没有解决这个问题,我肯定不会是唯一一个遇到这个问题的人! 它发生在我写的两个应用程序中。

我刚刚尝试解决同样的问题,我不知道为什么setStatusBarHidden和setStatusBarStyle已被弃用,因为新方法根本不直观。

要在启动时隐藏状态栏,我在plist中有以下设置:

 View controller-based status bar appearance: YES Status bar is initially hidden: YES 

然后在启动后显示状态栏我在视图控制器中:

 - (BOOL)prefersStatusBarHidden { return NO; } -(UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; } 

直到我找到这个答案https://stackoverflow.com/a/19365160/488611后,这仍然无效。 所以在viewDidLoad中我还设置了导航栏样式:

 self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; 

这绝对没有意义,但有效。

您可以使用

 application.statusBarHidden=YES; 

在AppDelegate.m中

 didFinishLaunchingWithOptions 

在我看来,你应该改变UIViewControllerBasedStatusBarAppearance的值。

设置项目a的值文件.plist

UIViewControllerBasedStatusBarAppearance = NO

并检入文件AppDelegate并设置代码

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

希望我的解决方案可以解决您的问题。

好的,我完全误解了你的问题。 这是正确的答案。

将以下值添加到’info.plist’。

 Status bar is initially hidden : YES View Controller based status bar appearance : YES 

UIViewController ,您要显示状态栏

 - (BOOL)prefersStatusBarHidden { return NO; } 

就这样。

我不是这方面的专家,但我玩这些设置已经有一段时间了,得出了以下结论。

常规/部署信息:状态栏样式:默认(黑色),灯光隐藏状态栏(复选框)两者都仅更改启动屏幕上的状态栏。 请注意,如果您使用屏幕截图创建此图像并且屏幕截图包含状态栏,则即使您已选中隐藏状态栏复选框,也会显示设备正在设置状态栏! 在我最终想要查看启动图像本身之前,我被这个骗了一段时间,并且照片中有一个状态栏,所以设置Hide似乎永远不会起作用,即使它确实有效。 我使用Photoshop从图像本身中删除了状态栏,然后启动状态栏按预期运行。

信息/自定义iOS目标属性(这些更改PLIST中的值,因此您可以在任何位置更改它们):状态栏最初隐藏:是/否状态栏样式:灰色(默认),透明黑色,不透明黑色视图控制器基于状态栏的外观:是/否如果将“状态栏最初隐藏”设置为“否”,则视图控制器上将显示状态栏,如您所愿。 如果要隐藏View Controller上的状态栏,则必须将状态栏最初隐藏为是并将基于视图控制器的状态栏外观设置为否。

视图控制器/模拟指标状态栏的属性检查器:无,推断,默认,亮,黑色(不建议使用)这似乎对除了StoryBoard中视图控制器的外观而在模拟器中没有任何影响。

摘要:要回答您的问题,请在“常规部署信息”下,选中“隐藏状态栏”复选框。 这将隐藏启动屏幕上的状态栏。 确保启动屏幕的图像中没有状态栏的图片。 StoryBoard或Target中的所有设置似乎都没有关闭视图控制器的状态栏,因此它似乎会保持打开状态。 但是,我没有测试任何程序设置; 我认为你不应该做任何这些,它会以你想要的方式工作。