setStatusBarHidden(_:withAnimation:) deprecated in iOS 9
Refer to preferredStatusBarUpdateAnimation
,
Gif
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 }}