无法为视图设置 iOS 状态栏颜色
Posted
技术标签:
【中文标题】无法为视图设置 iOS 状态栏颜色【英文标题】:Cannot set iOS Status Bar Colour for View 【发布时间】:2015-07-14 13:02:02 【问题描述】:我正在使用 Swift 1.2 为 iOS8 开发应用程序。
但是,我遇到了状态栏颜色的问题(带有时间、电池指示器等的颜色)。
在我的Info.plist
文件中,我将UIViewControllerBasedStatusBarAppearance
设置为YES
,并将Status bar style
设置为UIStatusBarStyleLightContent
,然后在我的故事板中的所有视图控制器中,我将状态栏设置为“轻量级内容”。
这适用于我所有的NavigationViewControllers
和嵌入在NavigationViewControllers
中的视图,但是我有一个普通的TableViewController
,它没有嵌入在NavigationController
中,当我以模态方式推送此视图时,状态栏会发生变化变黑!???
即使我在 Storyboard 编辑器中查看视图,它仍显示为白色状态栏(请注意下面屏幕截图右侧的微弱白色电池指示灯):
但是当我在 iPhone 上构建和运行时,状态栏显示为黑色...
这是为什么?我怎样才能解决这个问题?不知道哪里不对。
【问题讨论】:
再添加一个键Status bar style
-> UIStatusBarStyleLightContent
是的,已经有了(抱歉,问题中没有提到,但也已经有了)
设法在另一个帖子中找到解决方案:***.com/questions/24622960/…
【参考方案1】:
请确保将具有值NO
的View controller-based status bar appearance
(UIViewControllerBasedStatusBarAppearance) 添加到您的Info.plist
【讨论】:
我已将其设置为“是”...为什么要将其设置为“否”?当我之前将其设置为 NO 时,我遇到了一个不同的问题,即状态栏为白色,但是当我显示 UIImagePicker 然后关闭选择器时,从那时起,状态栏将在整个应用程序中始终为黑色(其中不正确...需要是白色的) 当您选择YES时,每个控制器都可以使用自己的样式。当您将其设置为 NO 时,始终使用 plist 中的设置。【参考方案2】:更新:
我从另一篇 *** 文章 (Swift UIApplication.setStatusBarStyle Doesn't work) 中发现解决方案非常简单。
对于其他想要以编程方式设置状态栏颜色的人,我只是将以下代码插入到我的 ViewController 中以获取相关视图:
- 斯威夫特 4.0+
override var preferredStatusBarStyle: UIStatusBarStyle
return .lightContent
- 早期的 Swift (4.0-)
override func preferredStatusBarStyle() -> UIStatusBarStyle
return .LightContent
【讨论】:
【参考方案3】:这些是UIStatusBar
风格的设置:
转到AppDelegate.swift
,在didFinishLaunchingWithOptions
方法中添加下面的代码行:
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
将以下键添加到.plist
文件中。
-
在 Storyboard 中选择您的控制器
UINavigationController
或 UIViewController
。并将状态栏样式设置为Light Content
【讨论】:
在storyboard中选择状态栏的选项实际上已经不可能了。【参考方案4】:对于 Swift 3
在你的AppDelegate.swift
文件中的函数didFinishLaunchingWithOptions
中
UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
【讨论】:
【参考方案5】:将此行添加到您的Appdelegate.swift
文件中:
UIApplication.sharedApplication().statusBarStyle = .LightContent
【讨论】:
以上是关于无法为视图设置 iOS 状态栏颜色的主要内容,如果未能解决你的问题,请参考以下文章