iOS ステータスバーを表示・非表示を動的に切り替える方法のメモ
Swift3.0とiOS 10で動作確認しました
動きはこんな感じ
iOS 8だとこれで表示・非表示を切り替えられましたが、iOS 9以降は非推奨になりました
let application = UIApplication.shared application.setStatusBarHidden(true, with: .slide) // 非表示
let application = UIApplication.shared application.setStatusBarHidden(false, with: .slide) // 表示
参考にしたのはこちら
swift – setStatusBarHidden(_:withAnimation:) deprecated in iOS 9 – Stack Overflow
表示・表示を管理するグローバル変数を定義。最初は表示
var isStatusBarHidden: Bool = false
ボタンを押すと切り替わるようにします
@IBAction func statusBarUpdateButtonDidPush(_ sender: AnyObject) { isStatusBarHidden = !isStatusBarHidden UIView.animate(withDuration: 0.5) { () -> Void in self.setNeedsStatusBarAppearanceUpdate() } }
この2つをオーバーライドする
prefersStatusBarHiddenで表示・表示を管理する変数の値を返すようにします
override var prefersStatusBarHidden: Bool { return isStatusBarHidden } override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation { return .slide }
以上です