Change status bar color dynamically in Swift 4

后端 未结 3 1128
天命终不由人
天命终不由人 2021-01-31 22:11

I would like to change the status bar color between .lightContent and .default dynamically (since my background can change in the same ViewController).

3条回答
  •  灰色年华
    2021-01-31 22:30

    Create a property with type UIStatusBarStyle and return the value in preferredStatusBarStyle

    And you can change its value whenever you need and call setNeedsStatusBarAppearanceUpdate()

    class ViewController: UIViewController {
    
        override var preferredStatusBarStyle: UIStatusBarStyle {
            return self.style
        }
        var style:UIStatusBarStyle = .default
    
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    
        @IBAction func changeStyle(_ sender: UIButton) {
            if self.style == .lightContent {
                self.style = .default
            } else {
                self.style = .lightContent
            }
            setNeedsStatusBarAppearanceUpdate()
        }
    }
    
    override var preferredStatusBarStyle: UIStatusBarStyle { return self.style }
    

    wont be called if you have embedded your view controller in a navigation controller You should change bar style of your navigation controller

    self.navigationController?.navigationBar.barStyle = //newStyle
    

提交回复
热议问题