如何在Swift iOS应用程序中隐藏状态栏?

我想删除屏幕顶部的状态栏。

这不起作用:

func application (application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { application.statusBarHidden = true return true } 

我也试过:

 func application (application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { self.window = UIWindow(frame: UIScreen.mainScreen().bounds) var controller = UIViewController() application.statusBarHidden = true controller.setNeedsStatusBarAppearanceUpdate() var view = UIView(frame: CGRectMake(0, 0, 320, 568)) view.backgroundColor = UIColor.redColor() controller.view = view var label = UILabel(frame: CGRectMake(0, 0, 200, 21)) label.center = CGPointMake(160, 284) label.textAlignment = NSTextAlignment.Center label.text = "Hello World" controller.view.addSubview(label) self.window!.rootViewController = controller self.window!.makeKeyAndVisible() return true } 

你真的应该在你的视图控制器上实现prefersStatusBarHidden:

迅速2

 override func prefersStatusBarHidden() -> Bool { return true } 

迅速3

 override var prefersStatusBarHidden: Bool { return true } 
  1. 转到Info.plist文件
  2. 将鼠标hover在其中一行上,将显示(+)和( – )button。
  3. 点击加号button,以大写字母V开始添加新的键入types,自动第一个选项将是基于视图控制器的状态栏外观。
  4. 将其作为KEY添加。
  5. 将VALUE值设为“NO”
  6. 去你AppDelegate.swift
  7. 在方法中添加代码

     func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool { application.statusBarHidden = true return true } 

DONE! 运行你的应用程序,没有更多的状态栏!

Swift 3

Info.plistView controller-based status bar appearanceNO

并调用UIApplication.shared.isStatusBarHidden = true

如果您更喜欢使用可视方法而不是编码,请使用以下方法:在您的info.plist

在这里输入图像描述 只需将View controller-based status bar appearanceNO

并且Status bar is initially hiddenYES

  override func viewWillAppear(animated: Bool) { super.viewWillAppear(true); navigationController?.navigationBar.hidden = true // for navigation bar hide UIApplication.sharedApplication().statusBarHidden=true; // for status bar hide } 

更新为iOS 10 / Swift 3.0

不再是一个function,现在属性…

 override var prefersStatusBarHidden: Bool { return true } 

所以这里的问题实际上与Swift没有任何关系,而是iOS 7状态栏外观的处理方式。

默认情况下,视图控制器分别控制状态栏在屏幕上的外观。 如果你想使用这种控制状态栏的方法,你可以为任何视图控制器重写以下方法来修改外观:

prefersStatusBarHiddenpreferredStatusBarStylepreferredStatusBarAnimation

在你的情况下,你只会实现prefersStatusBarHidden并返回true

另一种方法是在应用程序级别控制状态栏的外观。 这似乎是你实际上想要做的(通过设置application.statusBarHidden )。

为了使这个工作,你需要打开你的应用程序的Info.plist文件,并添加关键UIViewControllerBasedStatusBarAppearance ,并给它一个值为NO

在Swift 3.x中:

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

我其实是自己想出来的。 我将添加我的解决scheme作为另一种select。

 extension UIViewController { func prefersStatusBarHidden() -> Bool { return true } } 

好吧,这对我来说是个问题,因为iOS 9不支持上面提到的方法,比如UIApplication.sharedApplication().statusBarHidden = true 或者

 UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None) 

 override func prefersStatusBarHidden() -> Bool { return true } 

工作,但不提供可编程的解决scheme,我可以改变一个条件。 ( statusBarHidden = truestatusBarHidden = false就像我们以前所做的那样)。

解决这个疯狂:

通过添加到像下面这样的prefersStatusBarHidden() ,您可以以编程方式控制状态栏的隐藏和显示,而无需将UIViewControllerBasedStatusBarAppearance设置添加到您的info.plist中

 var showStatusBar = true override func prefersStatusBarHidden() -> Bool { if showStatusBar { return false } return true } private func showStatusBar(enabled: Bool) { showStatusBar = enabled prefersStatusBarHidden() } 

然后在整个代码中使用它:

 //Hide Status Bar showStatusBar(false) 

要么

 //Show Status Bar showStatusBar(true) 

如果你想暂时隐藏并返回状态栏,你可以使用这个方法:

场景 : – 在GMail的iOS应用程序中,当滑动菜单来自汉堡包图标左侧时,它们隐藏了状态栏。 而当菜单滑回时,他们将带回状态栏。

隐藏状态栏: –

 UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelStatusBar 

要恢复状态栏:

 UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelNormal 

转到您的Info.plist并添加两个密钥:

转到您的Info.plist并添加两个密钥:

只要添加,当覆盖prefersStatusBarHidden方法或variables时,Info.plist中View controller-based status bar appearance必须为YES,否则覆盖将不起作用

就我而言,我在寻找状态栏来隐藏/显示需求; 而不仅仅是当视图加载或消失时。

迅速3.x

 //show status bar initially var showStatusBar = true //set the parameters override var prefersStatusBarHidden: Bool { if showStatusBar == true { //does not prefer status bar hidden print("does not prefer status bar hidden") return false } else { //does prefer status bar hidden print("does prefer status bar hidden") return true } } //ex: hide status bar and call parameter function again whenever you want showStatusBar = false setNeedsStatusBarAppearanceUpdate() 

我使用的Xcode 8.1(8B62)的部署目标设置为10.1,我没有运气与上面提到的覆盖选项。 然而,检查“部署信息”中的“隐藏状态栏”选项对我来说是个诀窍。

项目>常规

我希望这有帮助。

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { application.isStatusBarHidden = true return true } 

您可以在您的ViewController Class scope使用此代码

 open override var prefersStatusBarHidden: Bool { return true }