私のアプリの背景色は黒です。 iOS 7では、ビュー全体がステータスバーの下にあるため、ステータスバーのコンテンツを区別するのは困難です。それでは、ステータスバーのコンテンツの色を白に変更する方法は?
preferredStatusBarStyle
および他のいくつかの方法を試しましたが、失敗しました。
インサート
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
appDelegate.mの-application:didFinishLaunchingWithOptions:
に。
注:UIStatusBarStyleDefault
はステータスバースタイルのデフォルト値であり、代わりに黒のコンテンツが表示されます。 UIStatusBarStyleBlackTranslucent
とUIStatusBarStyleBlackOpaque
の両方は、iOS 7.0では非推奨です。
@ ZakariaDarwish が言及されているように、メソッド-setStatusBarStyle
はiOS 9で非推奨になりました(注:元の質問はiOS 7でずっと前に尋ねられましたが、現在はサポートしていません。以下の新しいソリューションはiOS 9で動作するため、ここで更新してください。)
そのため、(少なくとも現時点では)唯一の方法は、View Controllerに-preferredStatusBarStyle
を実装することです(「View Controllerベースのステータスバーの外観」を忘れずに設定することを忘れないでください) to YES)。
-setNeedsStatusBarAppearanceUpdate
または-preferredStatusBarStyle
で値が変更されると、UIViewControllerのインスタンスメソッド-prefersStatusBarHidden
を呼び出すことができます。
また、2つのメソッド-childViewControllerForStatusBarStyle
&-childViewControllerForStatusBarHidden
があり、必要に応じて子View Controllerから優先スタイルを返します。
e.g。、以下のメソッドを使用した場合
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
前にステータスバーのスタイルを切り替えるには、以下のコードサンプルを使用できます
- (void)shouldChangeStatusBarStyleToLightContent:(BOOL)toLightContent
animated:(BOOL)animated
{
_shouldChangeStatusBarStyleToLightContent = toLightContent;
if (animated) {
[UIView animateWithDuration:.3f animations:^{ [self setNeedsStatusBarAppearanceUpdate]; }];
} else {
[self setNeedsStatusBarAppearanceUpdate];
}
}
- (UIStatusBarStyle)preferredStatusBarStyle
{
return (_shouldChangeStatusBarStyleToLightContent ? UIStatusBarStyleLightContent : UIStatusBarStyleDefault);
}
この更新されたソリューションを今すぐ。
* -Info.plistファイルで:
または、ターゲットの「一般」タブでステータスバーのスタイルを「黒の不透明」または「黒の半透明」に指定できます(Xcode 5.0.1で)。ただし、これらは廃止された値です。
私はこれをメインコントローラーで使用します:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
ここで、ステータスバーの色を設定するための短くて簡単な解決策を白
1)最初にこの行View controller-based status bar appearance
を.plistファイルにコピーし、ブール値NO
を設定します。
2)AppDelegate.mファイルにdidFinishLaunchingWithOptionsファイルを貼り付けます
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
[[UIApplication sharedApplication] setStatusBarHidden:NO];
または.plistに追加
iOS 9(非推奨の警告回避策)
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
#ifdef __IPHONE_7_0
# define STATUS_STYLE UIStatusBarStyleLightContent
#else
# define STATUS_STYLE UIStatusBarStyleBlackTranslucent
#endif
[[UIApplication sharedApplication] setStatusBarStyle:STATUS_STYLE animated:YES];
アプリケーションがView Controllerごとに異なるステータスバーのコンテンツの色を持っている場合、推奨される方法は実装されます
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
アプリケーション全体でバーのコンテンツの色をグローバルに変更する必要がある場合は、AppDelegateのdidFinishLaunchingWithOptionsメソッドに次のコード行を追加します
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.statusBarStyle = .lightContent
return true
}
アプリケーションがデフォルトのUIViewControllerベースのステータスバーシステムを使用している場合、statusBarStyleの設定は何もしません。このため
info.listファイルで「View Controller-based status bar Appearance」をNOに設定
これはそこにあったからです。 UINavigationControllerを使用している場合、これをView ControllerのviewDidLoad
メソッドにスローできます。
self.navigationController.navigationBar.barStyle = UIStatusBarStyleLightContent;
Swift 3でプログラムで実行するには、View Controllerの任意の場所でこれを試してください。
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
また、plistキーの[コントローラーベースのステータスバーの表示]を[はい]に設定します。