iOSでステータスバーを非表示にする

f:id:daihase:20190809100049p:plain

こんにちは、daihaseです。 今日はSwiftネタでちょっとした備忘録を。

iOSアプリを開発していて、ステータスバーをある画面でだけ非表示にしたい時がありました。該当するViewControllerで以下のコードを書けばステータスバーが非表示になります。

override func viewDidLoad() {
  super.viewDidLoad()
  self.setNeedsStatusBarAppearanceUpdate()
}

override var prefersStatusBarHidden: Bool {
  return true
}

 

setNeedsStatusBarAppearanceUpdate()を非表示にしたいタイミングで呼び出し、prefersStatusBarHideenをオーバーライドしてやる感じです。

ちなみに自分が開発していたのはその画面でカメラを起動する内容で、これだけだとその際だけステータスバーがニュっと一瞬出てきてしまいます。

その場合は適当に「UIImagePickerController+Extended.swift」とかってファイルを作って下記のように対応してやりましょう。

import UIKit

extension UIImagePickerController {
    open override var childViewControllerForStatusBarHidden: UIViewController? {
        return nil
    }
    
    open override var prefersStatusBarHidden: Bool {
        return true
    }
}

 

それでは良い開発ライフを〜