追加中
application.statusBarStyle = .lightContent
私のAppDelegateのdidFinishLaunchingWithOptionsメソッドに追加も
override var preferredStatusBarStyle: UIStatusBarStyle {
return UIStatusBarStyle.lightContent
}
VCはiOS12/Xcode10では動作しなくなりました
何か案は?
View Controllerごとに同じステータスバーの色を選択した場合:
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
これをInfo.plistに追加し、[プロジェクト]-> [ターゲット]-> [ステータスバースタイル]から目的の色でステータスバーの色を設定します。
一方、あなたのケースでは、View Controllerに埋め込まれたNavigation Controllerがあります。したがって、ページごとに異なるステータスバーの色にする必要があります。
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
これをInfo.plistに広告します。次に、NavigationControllerのカスタムクラスを作成します。その後、メソッドを実装できます。
class LightContentNavigationController: UINavigationController {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
それでおしまい!これが有用かどうか教えてください!
これはiOS 12とは関係ありません。ルールが間違っているだけです。
Navigation Controllerの状況では、ステータスバーの色はView ControllerのpreferredStatusBarStyle
によって決定されません。
驚くべきことに、ナビゲーションバーのbarStyle
によって決定されます。ライトステータスバーのテキストを取得するには、次のように言います(View Controllerで):
self.navigationController?.navigationBar.barStyle = .black
信じ難いが、真実。私はこの情報を数年前にAppleから直接入手しました。
ストーリーボードでこの設定を実行することもできます。
例!ナビゲーションバーのバースタイルは.default
:
ナビゲーションバーのバースタイルは.black
:
iOS 13の注意事項これは、大きなタイトルやUIBarAppearanceを使用しない限り、iOS 13でも機能します。しかし、基本的にはこれをやめ、ユーザーのライトモードまたはダークモードの選択に応じてステータスバーの色を自動にする必要があります。