Swift:在 IOS13+ 上设置 StatusBar 颜色使用 statusBarManager

问题描述

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

enter image description here

代码正在运行,但有警告

谁想要的代码

class AppDelegate: UIResponder,UIApplicationDelegate {

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

解决方法

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

因为 statusBarManager 是 get only 属性。检查enter image description 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
}

这是一篇关于 Here 的好文章。

,

您可以简单地在 Info.plist 中添加值为 Light 的 Appearance 键

Please check this image for reference