【问题标题】:How to control the StatusBar style with code in Swift3.0如何在 Swift 3.0 中使用代码控制状态栏样式
【发布时间】:2017-03-09 12:43:15
【问题描述】:

我用的代码:

override var preferredStatusBarStyle: UIStatusBarStyle {
    return UIStatusBarStyle.lightContent
}

我加了

<key>UIViewControllerBasedStatusBarAppearance</key><false/>

在 Info.plist 中。

但 StatusBar 仍然是黑色风格!为什么?

【问题讨论】:

  • 你需要在 Appdelegate 中使用 Overrite 方法:didFinishLaunchingWithOptions 只需输入以下代码: UIApplication.shared.statusBarStyle = .lightContent
  • @NitinGohel,请不要建议已弃用的代码。按照您的建议以编程方式设置状态栏样式已在 iOS 9.0 上弃用。虽然它可能适用于当前版本的 iOS,但在未来的任何版本中,它都可能不适用。
  • 真的很重要吗 :) @FahriAzimov 然后请发布您的答案以获得帮助,而不是浪费您的时间 :)
  • 是的,这很重要。您不应该教初学者使用已弃用的方法开始开发。

标签: ios swift3


【解决方案1】:

SWIFT 3

UINavigationController 会覆盖视图控制器的首选状态栏样式。您可以通过继承 UINavigationController 将控制权交还给视图控制器:

class BaseNavigationController: UINavigationController {

var statusBarStyle: UIStatusBarStyle?

override var preferredStatusBarStyle: UIStatusBarStyle {
    return statusBarStyle ?? .default
}

然后您就可以在视图控制器中设置 statusBarStyle 属性:

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

    if let navigationController = navigationController as? BaseNavigationController {
        navigationController.statusBarStyle = preferredStatusBarStyle
    }
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .default // any style you want
}

【讨论】:

    【解决方案2】:

    它不起作用,因为您在 Info.plist 中指定了 &lt;key&gt;UIViewControllerBasedStatusBarAppearance&lt;/key&gt;&lt;false/&gt;。将该键更改为true,它将起作用。该键背后的主要思想是,当它为真时,应用程序在您的视图控制器代码中查找状态栏样式以实现preferredStatusBarStyle(用于状态栏样式)和prefersStatusBarHidden(如果它应该为此隐藏状态栏视图控制器)。而且,当 UIViewControllerBasedStatusBarAppearance 键为 false 时,应用程序会查找在目标首选项的 General 部分中定义的全局设置(在 xcode 的项目导航器中选择项目文件)。

    另外,您必须记住,当您的视图控制器位于 UINavigationControllerUITabbarController 等容器上时,为了更改状态栏外观,您必须扩展这些容器(写入扩展名),并且覆盖preferredStatusBarStyle 属性。

    您也可以在 SO 上查看this 答案。

    【讨论】:

      猜你喜欢
      • 2017-06-09
      • 2016-12-09
      • 2018-09-05
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 1970-01-01
      • 2013-09-25
      相关资源
      最近更新 更多