setStatusBarHidden(_:withAnimation:) deprecated in iOS 9 setStatusBarHidden(_:withAnimation:) deprecated in iOS 9 ios ios

setStatusBarHidden(_:withAnimation:) deprecated in iOS 9


Refer to preferredStatusBarUpdateAnimation,

Gif

enter image description here

Code

class ViewController: UIViewController {    var isHidden:Bool = false{        didSet{            UIView.animate(withDuration: 0.5) { () -> Void in                self.setNeedsStatusBarAppearanceUpdate()            }           }    }    @IBAction func clicked(sender: AnyObject) {        isHidden = !isHidden    }    override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation{        return .slide    }    override var prefersStatusBarHidden: Bool{        return isHidden    } }


Swift 3

  • Computed variables have replaced some functions
  • The animate function has updated syntax

class ViewController: UIViewController {    var isHidden:Bool = false    @IBAction func clicked(sender: AnyObject) {        isHidden = !isHidden        UIView.animate(withDuration: 0.5) { () -> Void in            self.setNeedsStatusBarAppearanceUpdate()        }    }    override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {        return UIStatusBarAnimation.slide    }    override var prefersStatusBarHidden: Bool {        return isHidden    }}


I have cleaned up Leo's amazing answer a bit by moving the update to didSet (Swift 3 syntax).

class ViewController: UIViewController {    @IBAction func clicked(sender: AnyObject) {        statusBarHidden = !statusBarHidden    }    var statusBarHidden = false {        didSet {            UIView.animate(withDuration: 0.5) { () -> Void in                self.setNeedsStatusBarAppearanceUpdate()            }        }    }    override var prefersStatusBarHidden: Bool {        return statusBarHidden    }    override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {        return .slide    }}