即使设置为亮起状态栏也保持黑色

Status bar stays black even when set to light

我的应用兼容 iPad 和 iPhone in Swift,支持 iOS 7 和 8,使用 XCode 6.4。现在,我将应用程序结构化为主从控件,并将拆分控制器状态栏设置为浅色(白色)。在 Storyboard 中,所有控制器都显示白色状态栏(主控、详细信息、导航控制器...),但在模拟器中和 iPhone / iPad 中都不是白色而是黑色!

我尝试在每个控制器及其导航器控制器中设置灯状态栏。尝试在主视图控制器中进行设置。尝试添加允许我设置每个视图控制器的 plist 选项(请注意,我不想控制每个控制器的状态栏颜色,而是为应用程序设置全局)。还尝试为状态栏样式设置覆盖功能,甚至在 viewDidLoad 函数中设置重新加载功能。没有任何效果。

我真的卡在这里了;我认为只是设置在拆分控制灯状态栏和它继承它的其他任何地方(这就是它在 stoyboard 中的样子)。那我错过了什么?任何人都可以帮助我或给我一些进一步调查的提示或指示吗?

这里是演示代码:https://goo.gl/U3Ynbc

非常感谢!

好的,找到了。 在 plist 中将 "View controller-based status bar appearance" 设置为 NO 并在 appDelegate.swift 中在 return true 之前的 func application 中添加以下行: splitViewController.navigationController?.navigationBar.tintColor = UIColor.whiteColor()

在您的 Info.plist 中,将 "View controller-based status bar appearance" 添加到 YES

然后,在您的视图控制器子类中,覆盖此方法:

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

与提问者有相同的经历(在将 .storyboard 中的值设置为 "Light Content" 后,在模拟器中看到 statusBar 前景为白色,并尝试在几个地方更改此应用程序使用 splitView),我在检查故事板的 XML 时发现这些是 "simulated metrics"。

当我将值 UIStatusBarStyle 添加到我的 Info.plist 并将其设置为 UIStatusBarStyleLightContent(这不是提供的选项之一)时,然后 运行,状态栏样式正确显示。 (那是在删除我放在 .storyboard 文件中的所有模拟指标更改之后)。

如果您想设置状态栏样式,应用程序级别然后在您的.plist文件中将UIViewControllerBasedStatusBarAppearance设置为NO

如果您想在视图控制器级别设置状态栏样式,请按照以下步骤操作:

  1. 如果您只需要在 UIViewController 级别设置状态栏样式,请在 .plist 文件中将 UIViewControllerBasedStatusBarAppearance 设置为 YES
  2. 在viewDidLoad中添加函数——setNeedsStatusBarAppearanceUpdate

  3. 在您的视图控制器中覆盖 preferredStatusBarStyle。

-

override func viewDidLoad() {
    super.viewDidLoad()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

根据状态栏样式设置级别设置.plist的值。