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

CHi*_*ard 12 objective-c ipad ios xcode6 ios9

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

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

在我的.plist中:

状态栏最初隐藏:NO

状态栏样式:UIStatusBarStyleLightContent

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

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

我有:

- (BOOL)prefersStatusBarHidden 
{
    return NO;
}

-(UIStatusBarStyle)preferredStatusBarStyle
{
    NSLog(@"style");
    return UIStatusBarStyleLightContent;
}
Run Code Online (Sandbox Code Playgroud)

setNeedsStatusBarAppearanceUpdate这肯定是所有调用的时候,视图负载在我的ViewController.

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

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

编辑:

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

Jam*_*s P 7

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

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

View controller-based status bar appearance: YES
Status bar is initially hidden: YES
Run Code Online (Sandbox Code Playgroud)

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

- (BOOL)prefersStatusBarHidden {    
    return NO;
}

-(UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}
Run Code Online (Sandbox Code Playgroud)

直到我找到这个答案/sf/answers/1355561231/后,这仍然无效.所以在viewDidLoad中我还设置了导航栏样式:

self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
Run Code Online (Sandbox Code Playgroud)

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


Cuo*_*yen 0

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

设置项目a的值文件.plist为

UIViewControllerBasedStatusBarAppearance = NO

并签入文件 AppDelegate 并设置代码

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

希望我的解决方案能够解决您的问题。

  • 正如问题中所述,我已经在 .plist 中设置了 UIViewControllerBasedStatusBarAppearance = NO,并且 setStatusBarStyle 是一种已弃用的方法。这对我没有帮助,但感谢您的尝试。 (2认同)