SWIFT:在IOS13+上设置StatusBar颜色(使用statusBarManager)

2022-09-20 00:00:00 colors statusbar swift

我想通过代码定义我的状态栏的颜色,就像我发现的那样,但它已被弃用。有人知道做这件事的新方法是什么吗?我的所有代码中都有此警告

此代码工作正常,但出现警告

任何人想要的代码:

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属性。勾选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/>

第二步:添加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的好文章。

相关文章