1. ホーム
  2. ios

[解決済み】Swift 3でステータスバーのスタイルを設定する方法

2022-04-16 20:53:50

質問

Xcode 8.0 beta 4を使用しています。

以前のバージョンでは、UIViewControllerにステータスバーのスタイルを設定するメソッドがありました。

public func preferredStatusBarStyle() -> UIStatusBarStyle

しかし、Swift 3では "Get ONLY varaiable" に変更されていることがわかりました。

public var preferredStatusBarStyle: UIStatusBarStyle { get } 

UIViewControllerで使用するスタイルを指定するには?

どのように解決するのですか?

[UPDATED] Xcode 10+ & Swift 4.2+に対応しました。

iOS 7 以降はこの方法が推奨されます。

アプリケーションの Info.plist を設定します。 View controller-based status bar appearance から YES .

オーバーライド preferredStatusBarStyle ( アップルドキュメント ) を各ビューコントローラーに追加します。例えば

override var preferredStatusBarStyle: UIStatusBarStyle {     
      return .lightContent
}

もし、あなたが preferredStatusBarStyle は、ビューコントローラの内部で変化する何か (たとえば、スクロール位置や表示される画像が暗いかどうか) に基づいて異なる優先ステータスバーのスタイルを返すので、そのために setNeedsStatusBarAppearanceUpdate() というように、状態が変化したときに

バージョン7以前のiOSでは、非推奨の方法

Appleはこれを非推奨としました そのため、将来的には削除される予定です。次のiOSのバージョンが出たときに書き換えなくていいように、上記の方法を使いましょう。

アプリケーションがサポートされる場合 アプリケーションの Info.plist を設定します。 View controller-based status bar appearance から NO .

appDelegate.swift は、その didFinishLaunchingWithOptions 関数で、追加します。

UIApplication.shared.statusBarStyle = .lightContent

ナビゲーションコントローラー用

ナビゲーションコントローラを使用していて、各ビューコントローラの優先ステータスバーのスタイルを使用し、設定したい場合 View controller-based status bar appearance から YES を、アプリケーションの info.plist

extension UINavigationController {
   open override var preferredStatusBarStyle: UIStatusBarStyle {
      return topViewController?.preferredStatusBarStyle ?? .default
   }
}