在iOS 9.0中不推荐使用setStatusBarHidden

iOS*_*mer 41 objective-c ios9

我正在将我的代码从iOS 8升级到iOS 9.我的程序中有一个代码片段 [[UIApplication applicationName] setStatusBarHidden:YES];.

我收到警告"在iOS 9.0中不推荐使用setStatusBarHidden,使用 - [UIViewController prefersStatusBarHidden".如果我只是将'setStatusBarHidden'替换为'prefersStatusBarHidden',我会得到'找不到实例方法'.有人可以建议我如何解决这个问题?

Nil*_*tel 53

将以下代码添加到视图控制器中..

 - (BOOL)prefersStatusBarHidden {

   return NO;
}
Run Code Online (Sandbox Code Playgroud)

注意 :

  • 如果更改此方法的返回值,请调用该 setNeedsStatusBarAppearanceUpdate方法.
  • 对于childViewController,要指定子视图控制器应控制首选状态栏隐藏/取消隐藏状态,请实现该childViewControllerForStatusBarHidden方法.

  • 这是怎样的解决方案?preferStatusBarHidden在iOS 9之前就已存在.它只能应用于视图控制器,所以如果你想更动态地隐藏或显示状态栏,你如何在iOS 9中处理它?例如,您可以根据用户触摸屏幕上的按钮来显示或隐藏状态栏? (3认同)
  • @NileshPatel感谢您的帮助.我最后想出了如何在我的根控制器上正确地改变它与你的想法.再次感谢.一个提示,请务必添加到您的info.plist"查看基于控制器的状态栏外观"设置为YES,否则事情似乎不起作用. (3认同)

Gau*_*tel 5

你必须在 yourViewController.m 中添加方法

- (BOOL)prefersStatusBarHidden {

   return NO;
}
Run Code Online (Sandbox Code Playgroud)


Jac*_*ack 5

可以从iOS 7+开始使用preferredsStatusBarHidden

在您的UIViewController课堂上使用

   var isHidden = true{
        didSet{
            self.setNeedsStatusBarAppearanceUpdate()
        }
    }
    override var prefersStatusBarHidden: Bool {
        return isHidden
    }
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如果更改此方法的返回值,请调用setNeedsStatusBarAppearanceUpdate()方法。若要指定子视图控制器应控制首选状态栏的隐藏/未隐藏状态,请实现childViewControllerForStatusBarHidden方法。