无法为视图设置 iOS 状态栏颜色

Cannot set iOS Status Bar Colour for View

我正在为 iOS8 开发应用程序,使用 Swift 1.2.

但是,我对状态栏(带有时间、电池指示器等的颜色)的颜色有疑问。

在我的 Info.plist 文件中,我将 UIViewControllerBasedStatusBarAppearance 设置为 YES 并将 Status bar style 设置为 UIStatusBarStyleLightContent 然后在我所有的视图控制器中在情节提要中,我将状态栏设置为 "Light Content"。

这适用于我所有的 NavigationViewControllers 和嵌入在 NavigationViewControllers 中的视图,但是我有一个正常的 TableViewController 没有嵌入到 NavigationController 中,当我以模态方式推送此视图,状态栏变为黑色!???

即使我在 Storyboard 编辑器中查看视图,它也显示为白色状态栏(请注意下方屏幕截图右侧的微弱白色电池指示器):

但是当我在 iPhone 上构建和 运行 时,状态栏显示为黑色...

这是为什么?我怎样才能解决这个问题?我不知道哪里不对。

请确保将值为 NOView controller-based status bar appearance (UIViewControllerBasedStatusBarAppearance) 添加到您的 Info.plist

这些是 UIStatusBar 风格的设置:

  1. 转到 AppDelegate.swiftdidFinishLaunchingWithOptions 方法中添加下面的代码行:

    UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
    
  2. 将以下键添加到 .plist 文件中。

  1. 在情节提要中 select 您的控制器 UINavigationControllerUIViewController。并设置状态栏样式为Light Content

更新:

我发现这个问题的解决方案非常简单,来自另一篇 Whosebug 文章 (Swift UIApplication.setStatusBarStyle Doesn't work)。

对于任何其他想要以编程方式设置状态栏颜色的人,我只是将以下代码插入到我的 ViewController 中以获取相关视图:

- Swift 4.0+

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent        
}

- 较早 Swift 秒 (4.0-)

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return .LightContent        
}

在您的 Appdelegate.swift 文件中添加此行:

UIApplication.sharedApplication().statusBarStyle = .LightContent

为Swift3

在您的 AppDelegate.swift 文件中的函数 didFinishLaunchingWithOptions

UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent