【问题标题】:Can not override the preferredStatusBarStyle无法覆盖preferredStatusBarStyle
【发布时间】:2021-05-14 15:30:29
【问题描述】:

在深色模式下,状态栏会因为深色而消失。

我添加了:

 override var preferredStatusBarStyle: UIStatusBarStyle {
            return .lightContent
        }

但问题是,当我在"viewDidLoad" 中添加方法时,我得到了错误:

覆盖只能在类成员中指定

知道如何解决这个问题吗?

【问题讨论】:

  • 这能回答你的问题吗? How to change Status Bar text color in iOS
  • 另外,请检查您的语法,您可能缺少 '}'
  • 谢谢,但链接没有回答我的问题。我检查了语法,它没有丢失

标签: swift uinavigationcontroller uistatusbar


【解决方案1】:

preferredStatusBarStyleUIViewController 类的成员。您在这里要做的是覆盖这个类成员。您问题中的 sn-p 与 viewDidLoad 方法无关,应该像这样放在您的子类主体中:

class YourViewController: UIViewController {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

【讨论】:

  • 但它不会调用preferredStatusBarStyle。
  • preferredStatusBarStyle 被 UIKit 调用。
  • 我在写这个问题之前试过了,它不起作用。
  • 您是否在 .plist 中设置了 UIViewControllerBasedStatusBarAppearance 值?您是否按照链接问题中的建议调用了viewDidLoad 中的setNeedsStatusBarAppearanceUpdate 方法?
  • 查看基于控制器的状态栏外观=NO,并调用了setNeedsStatusBarAppearanceUpdate(),但没有成功。
【解决方案2】:

我将在这里回答这个问题,也许它可以帮助其他人:

在检查我的代码几个小时后,我发现我有 rootViewController 用作身份验证,然后在身份验证用户传递给 TabbarViewController...不是 rootViewController 之后,我添加了:

preferredStatusBarStyle

到我的 rootViewController 并且它可以工作。

基于视图控制器的状态栏外观应该是 是的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多