ios - 将状态栏从浅色更改为深色

标签 ios swift statusbar uistatusbar

在我的代码中,我目前有一个变量dayTime,如果外面有光,则该变量为 true;如果是晚上,则该变量为 false。因此,我的代码在白天采用白色方案,在夜间采用深色方案。如果 dayTime 为 true,我需要状态栏为黑色;如果 dayTime 为 false,则状态栏为白色。目前,我设置 override var PreferredStatusBarStyle() 以返回 .lightContent 但我不知道如何调用 setNeedsStatusBarAppearanceUpdate() 来更改状态条变黑。

编辑:从 View Controller 添加代码

class BasicViewController: UIViewController {

    var dayTime = true

    override func viewDidLoad() {
        super.viewDidLoad()

        // gets current time to see if it is time to toggle night mode
        let date = NSDate()
        let calendar = Calendar.current
        let components = calendar.dateComponents([.hour, .minute], from: date as Date)
        let hour = components.hour

        if(dayTime) {
            setNeedsStatusBarAppearanceUpdate()
        }
    }

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

最佳答案

这就是我让它工作的方法。虽然我让它执行异步任务,所以我可以在任务完成后看到它的变化。

class ViewController: UIViewController {

    var dayTime = true

    override func viewDidLoad() {
        super.viewDidLoad()

        dayTime = false

        self.setNeedsStatusBarAppearanceUpdate()
    }

    override var preferredStatusBarStyle: UIStatusBarStyle {

        if daytime {

            return .default
        }

        return .lightContent
    }
}

关于ios - 将状态栏从浅色更改为深色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43969875/

相关文章:

swift - 如何屏蔽 Swift 中的最后一个数字?

Xcode 6 + Swift + NSTextViewDelegate = 编译错误

android - 防止触摸屏幕时出现android状态栏

c++ - 由 QStatusBar::showMessage() 引发的调整大小

objective-c - 如何移动屏幕上的导航栏位置

ios - Swift 4 Codable , CodingKey 仅用于解码

ios - 如何在主应用程序目标中使用单元测试用例(作为 test_spec 添加到开发 pod)?

ios - UISegmentedControl - 最后一段不容易选择

ios - SceneKit如何绘制上万条线?

iOS:在主从应用程序的导航栏中添加搜索栏