即使设置为亮,状态栏也保持黑色
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一致
flutter开发使用AnnotatedRegion修改状态栏字体颜色,导致导航栏也变黑了的解决方法