【Swift】iOS ステータスバーの表示・非表示を動的に切り替える

iOS ステータスバーを動的に表示・非表示を切り替える

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
}

以上です

タイトルとURLをコピーしました