
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
}
以上です



