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

5

我想通过代码来定义我的状态栏的颜色,我找到了这种方法,但它已被弃用。有人知道新的做法是什么吗?这个警告一直跟随着我所有的代码。

在此输入图片描述

这段代码可以工作,但会有一个警告。

对于那些想要的人,这是代码:

class AppDelegate: UIResponder, UIApplicationDelegate {

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

7

如警告所述,如果使用UIStatusBarManager,则无法设置样式。

因为statusBarManager是只读属性。请查看此处

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/>

步骤二:添加状态栏样式键并将样式设置为浅色内容

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

如果你想基于控制器设置不同的样式,那么请按照以下步骤进行操作: 第一步: 添加 View controller-based status bar appearance 键,并将值设置为 Yes
<key>UIViewControllerBasedStatusBarAppearance</key>
    <true/>

步骤2:在视图控制器中覆盖preferredStatusBarStyle
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

这是一篇关于如何设置状态栏样式的好文章。


非常感谢您的完整回答!我已经知道我可以在一个单一的ViewControler中定义它。我忘记评论我已经添加了步骤01的信息,但是步骤02我没有添加。我现在已经添加了它,并且没有代码行!再次感谢! - Gui Reis
非常感谢 @Raja 的答案,真的很有帮助。 - Satya

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接