如何在iOS 9中隐藏单个视图控制器的状态栏?

TIM*_*MEX 43 ios swift

在我以模态方式呈现的ViewController中,我这样做了:

override func prefersStatusBarHidden() -> Bool {
    return true
}
Run Code Online (Sandbox Code Playgroud)

这曾经工作,但它不再有效.仅为此视图控制器隐藏状态栏的最佳方法是什么?

Poc*_*chi 66

对于Swift 3Swift 4,它已经改为覆盖这样的变量:

override var prefersStatusBarHidden: Bool {
  return true
}
Run Code Online (Sandbox Code Playgroud)

如果要在视图控制器显示后"更新"状态,则需要调用:

setNeedsStatusBarAppearanceUpdate()
Run Code Online (Sandbox Code Playgroud)

请参阅文档.


gan*_*ena 43

对于Swift 3和Swift 4.2, 当视图出现时

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    UIApplication.shared.isStatusBarHidden = true
}
Run Code Online (Sandbox Code Playgroud)

当看到去往Dissapear的goint时

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    UIApplication.shared.isStatusBarHidden = false
}
Run Code Online (Sandbox Code Playgroud)

您可能需要在info.plist中设置下一行:

View controller-based status bar appearance = NO
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Gre*_*reg 19

在iOS 9,Xcode 7,Swift 2.0中,它又回到了之前的状态.

override func prefersStatusBarHidden() -> Bool {
        return true
}
Run Code Online (Sandbox Code Playgroud)

实际上Xcode会告诉你

UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: .None) 
Run Code Online (Sandbox Code Playgroud)

已被弃用,您应该使用prefersStatusBarHidden方法.

  • 如果prefersStatusBarHidden方法不执行任何操作,请将setNeedsStatusBarAppearanceUpdate()添加到viewDidLoad或viewDidAppear方法.取决于您想要实现的目标. (7认同)

ana*_*s.p 19

在你的UIViewController中:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    UIApplication.shared.isStatusBarHidden = true
}

 override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    //It will show the status bar again after dismiss
    UIApplication.shared.isStatusBarHidden = false
}

override var prefersStatusBarHidden: Bool {
    return true
}
Run Code Online (Sandbox Code Playgroud)


Ali*_*ĞLU 13

对于Swift 3,

override var prefersStatusBarHidden: Bool{
        return true
    }
Run Code Online (Sandbox Code Playgroud)

并添加 viewDidLoad()

self.modalPresentationCapturesStatusBarAppearance = true
Run Code Online (Sandbox Code Playgroud)

  • 最佳答案 (2认同)

Jay*_*bey 8

您可以通过简单地覆盖 prefersStatusBarHiddenViewController 中的属性来实现这一点,如下所示:

override var prefersStatusBarHidden: Bool {
   return true
}
Run Code Online (Sandbox Code Playgroud)

添加了截图

这适用于 Swift 3/4。


jas*_*hoi -1

UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: .None) 
Run Code Online (Sandbox Code Playgroud)

当您希望将其返回到单独的 VC 中时:

UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: .None) 
Run Code Online (Sandbox Code Playgroud)