将状态栏从亮变为暗

时间:2017-05-14 23:50:02

标签: ios swift statusbar uistatusbar

在我的代码中,我目前有一个变量dayTime,如果外面很亮则为true,如果是夜晚则为false。因此,我的代码具有白天的白色方案和夜间的黑暗方案。如果dayTime为真,我需要状态栏为黑色,如果dayTime为假,则需要白色。目前,我将override var preferredStatusBarStyle()设置为返回.lightContent,但我不知道如何致电setNeedsStatusBarAppearanceUpdate()将状态栏更改为黑色。

编辑:从视图控制器中添加了代码

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

1 个答案:

答案 0 :(得分:2)

这就是我开始工作的方式。虽然我有一个异步任务,所以我可以看到它在任务完成后发生了变化。

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