首页 文章

将状态栏从亮变为暗

提问于
浏览
2

在我的代码中,我目前有一个变量 dayTime ,如果它是's light outside and false if it'晚上是真的 . 因此,我的代码具有白天的白色方案和夜间的黑暗方案 . 如果 dayTime 为真,我需要我的状态栏为黑色,如果 dayTime 为假,我需要白色 . 目前,我设置 override var preferredStatusBarStyle() 返回 .lightContent 但我不知道如何调用 setNeedsStatusBarAppearanceUpdate() 将状态栏更改为黑色 .

EDIT: 从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
    }
}

1 回答

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

相关问题