Swift:在 IOS13+ 上设置状态栏颜色(使用 statusBarManager)

Posted

技术标签:

【中文标题】Swift:在 IOS13+ 上设置状态栏颜色(使用 statusBarManager)【英文标题】:Swift: Setting StatusBar color on IOS13+ (Using statusBarManager) 【发布时间】:2021-10-06 13:48:15 【问题描述】:

我想通过代码定义状态栏的颜色,我发现它的方式是这个,但它已被弃用。有谁知道这样做的新方法是什么?这个警告在我所有的代码中都跟着我

此代码正在运行,但出现警告

谁想要的代码:

class AppDelegate: UIResponder, UIApplicationDelegate 

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 
        UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
        return true
    

【问题讨论】:

【参考方案1】:

使用警告中提到的UIStatusBarManager,您也不能设置样式。

因为statusBarManager 是唯一的属性。检查Here

open var statusBarStyle: UIStatusBarStyle  get 

你必须覆盖preferredStatusBarStyle

像这样

class ViewController: UIViewController 
    
    override var preferredStatusBarStyle: UIStatusBarStyle 
        return .lightContent
    


如果您想将状态栏样式更改为所有视图控制器,可以在Info.plist 中进行设置。

第 1 步: 添加View controller-based status bar appearance键并设置No

<key>UIViewControllerBasedStatusBarAppearance</key>
    <false/>

第 2 步:添加 Status bar style 键并设置样式,如 Light Content

<key>UIStatusBarStyle</key>
    <string>UIStatusBarStyleLightContent</string>


如果您想要基于控制器的不同样式,那么, 第1步: 添加View controller-based status bar appearance键并设置Yes

<key>UIViewControllerBasedStatusBarAppearance</key>
    <true/>

第 2 步:在视图控制器中覆盖 preferredStatusBarStyle

override var preferredStatusBarStyle: UIStatusBarStyle 
    return .lightContent

这是一篇关于How to set status bar style的好文章。

【讨论】:

非常感谢您的完整回答!我已经知道我可以在单个 ViewControler 中定义它。我忘了评论我已经添加了步骤 01 中的信息,但步骤 02 我没有。我现在添加了它,它没有代码行!再次感谢!【参考方案2】:

您可以在 Info.plist 中简单地添加带有 Light 值的外观键

Please check this image for reference

【讨论】:

以上是关于Swift:在 IOS13+ 上设置状态栏颜色(使用 statusBarManager)的主要内容,如果未能解决你的问题,请参考以下文章

iOS 13 设置状态栏背景颜色

Swift - 状态栏颜色显示(字体背景)

在iOS8中使用Swift更改特定ViewControllers的状态栏颜色

Swift-修改状态栏颜色

在 iOS13 上更改状态栏颜色

Xcode 13 - swift OS 15 中的导航栏和状态栏文本颜色变化