Ios 如何使状态栏文本在黑暗模式下单击按钮时变暗?

Ios 如何使状态栏文本在黑暗模式下单击按钮时变暗?,ios,swift,xcode,ios13,ios-darkmode,Ios,Swift,Xcode,Ios13,Ios Darkmode,当我在正常模式下单击Default按钮时,状态栏样式会发生变化.black 但当我启用暗模式时,状态栏会自动变为白色,并且不会重新更改 我把单独的代码再次更改,但它不会工作 这是我的代码 @objc func defaultbutton() { if #available(iOS 13.0, *) { if traitCollection.userInterfaceStyle == .dark { self.setNeed

当我在正常模式下单击
Default
按钮时,状态栏样式会发生变化
.black
但当我启用暗模式时,状态栏会自动变为白色,并且不会重新更改

我把单独的代码再次更改,但它不会工作

这是我的代码

@objc func defaultbutton()
{
    if #available(iOS 13.0, *)
    {
        if traitCollection.userInterfaceStyle == .dark
        {
            self.setNeedsStatusBarAppearanceUpdate()
            self.navigationController?.navigationBar.barStyle = .black                               
            print("status bar style changing is failing everytime it's enterng here")
        }
        else
        {
            self.navigationController!.navigationBar.barStyle = .default
        }
    }
 }

您可以覆盖
viewController
中的
preferredStatusBarStyle
属性,将状态栏颜色在暗模式下更改为暗

override  open var preferredStatusBarStyle: UIStatusBarStyle {
    get {
        if traitCollection.userInterfaceStyle == .dark {
            return UIStatusBarStyle.darkContent
        } else {
            return UIStatusBarStyle.default
        }
    }
}

我已经测试过了,对我来说效果很好。尝试此解决方案,如果您遇到任何问题,请告诉我。我是否应该将此代码放入viewcontroller中的
default
按钮的
iAction
,您将覆盖viewcontrollers属性的默认实现。若要在view controller中添加此函数,我必须添加版本检查,即使在这之后,它仍然不起作用@Manikandan确保删除了状态栏中的其他更改,如self.navigationController!。navigationBar.barStyle=.default