我尝试了所有可以找到的解决方案,包括setStatusBarHidden is deprecated in iOS 9.0,但这些解决方案均不适用于我的应用程序。
这是一个简单的单 View 应用程序。有一个带有单个按钮的导航栏,状态栏应显示在其顶部。
在我的.plist中:

更改其中任何一个似乎都没有任何区别。我已选中状态栏样式“在应用程序启动期间隐藏”选项,因为我不希望它显示在初始屏幕上。
我有:

- (BOOL)prefersStatusBarHidden
{
    return NO;
}

-(UIStatusBarStyle)preferredStatusBarStyle
{
    NSLog(@"style");
    return UIStatusBarStyleLightContent;
}
setNeedsStatusBarAppearanceUpdate,当 View 加载到我的ViewController中时,肯定会全部调用它们。
该 View 在.storyboard中建立,但是许多字段也都在ViewController.m中进行操作。在模拟指标中分配给状态栏的值似乎也没有任何作用。
我需要在启动屏幕期间隐藏我的状态栏,并在viewController上看到它。请帮助我找到不使用不建议使用的setStatusbarHidden的解决方案!
编辑:
我仍然没有解决这个问题,我当然不能成为唯一遇到此问题的人!这在我编写的两个应用程序中都会发生。

最佳答案

我一直在尝试解决相同的问题,我不知道为什么不赞成使用setStatusBarHidden和setStatusBarStyle,因为新方法根本不直观。

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

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

然后要在启动后显示状态栏,请在我的 View Controller 中:
- (BOOL)prefersStatusBarHidden {
    return NO;
}

-(UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

直到我找到这个答案https://stackoverflow.com/a/19365160/488611,这仍然没有用。因此,在viewDidLoad中,我还设置了导航栏样式:
self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;

这绝对没有道理,但是可行。

10-08 12:27