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

Posted

技术标签:

【中文标题】即使设置为亮,状态栏也保持黑色【英文标题】:Status bar stays black even when set to light 【发布时间】:2015-09-11 21:40:52 【问题描述】:

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

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

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

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

非常感谢!

【问题讨论】:

【参考方案1】:

在您的Info.plist 中,将“基于控制器的状态栏外观”添加到YES

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

- (UIStatusBarStyle)preferredStatusBarStyle

    return UIStatusBarStyleLightContent;

【讨论】:

【参考方案2】:

好的,找到了。 在 plist 中将“基于控制器的状态栏外观”设置为 NO,并在 func 应用程序中的 appDelegate.swift 中,在返回 true 之前添加以下行: splitViewController.navigationController?.navigationBar.tintColor = UIColor.whiteColor()

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

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

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

    如果您只需要在 UIViewController 级别设置状态栏样式,请在 .plist 文件中将 UIViewControllerBasedStatusBarAppearance 设置为 YES

    在viewDidLoad添加函数-setNeedsStatusBarAppearanceUpdate

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

-

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


override var preferredStatusBarStyle: UIStatusBarStyle 
    return .lightContent

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

【讨论】:

以上是关于即使设置为亮,状态栏也保持黑色的主要内容,如果未能解决你的问题,请参考以下文章

UIStatusBar样式与UINavigationBar一致

ios7状态栏在模态视图上变回黑色? [复制]

iOS 15 中的状态栏样式不变

flutter开发使用AnnotatedRegion修改状态栏字体颜色,导致导航栏也变黑了的解决方法

手机顶端的状态栏怎么变成黑色的了,之前只是墙纸,看着好别扭,怎么设置回来啊。

Android:工具栏状态栏重叠