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

Posted

技术标签:

【中文标题】无法为视图设置 iOS 状态栏颜色【英文标题】:Cannot set iOS Status Bar Colour for View 【发布时间】:2015-07-14 13:02:02 【问题描述】:

我正在使用 Swift 1.2iOS8 开发应用程序。

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

在我的Info.plist 文件中,我将UIViewControllerBasedStatusBarAppearance 设置为YES,并将Status bar style 设置为UIStatusBarStyleLightContent,然后在我的故事板中的所有视图控制器中,我将状态栏设置为“轻量级内容”。

这适用于我所有的NavigationViewControllers 和嵌入在NavigationViewControllers 中的视图,但是我有一个普通的TableViewController,它没有嵌入在NavigationController 中,当我以模态方式推送此视图时,状态栏会发生变化变黑!???

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

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

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

【问题讨论】:

再添加一个键Status bar style -> UIStatusBarStyleLightContent 是的,已经有了(抱歉,问题中没有提到,但也已经有了) 设法在另一个帖子中找到解决方案:***.com/questions/24622960/… 【参考方案1】:

请确保将具有值NOView 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 中选择您的控制器 UINavigationControllerUIViewController。并将状态栏样式设置为Light Content

【讨论】:

在storyboard中选择状态栏的选项实际上已经不可能了。【参考方案4】:

对于 Swift 3

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

UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent

【讨论】:

【参考方案5】:

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

UIApplication.sharedApplication().statusBarStyle = .LightContent

【讨论】:

以上是关于无法为视图设置 iOS 状态栏颜色的主要内容,如果未能解决你的问题,请参考以下文章

无法将状态栏设置为浅色内容(iOS7)

Swift:更改 iOS 13 的状态栏颜色

SwiftUI:为特定视图设置状态栏颜色

iOS Swift TabBar状态栏文字颜色毛刺半白半黑

为不同的视图控制器设置状态栏颜色

更改状态栏色调颜色