ステータス バーのフォントは黒です: UIStatusBarStyleDefault
ステータス バーのフォントは白です: UIStatusBarStyleLightContent
1. info.plist で、View コントローラーベースのステータス バーの外観を NO** に設定します。
ステータス バーのフォントの色は次のプロパティによってのみ設定され、デフォルトは白です。
// default is UIStatusBarStyleDefault
[UIApplication sharedApplication].statusBarStyle
個々の VC でステータス バーのフォントの色が異なる問題を解決する方法
- info.plist で、View コントローラーベースのステータス バーの外観を NO に設定します。
- アプリデリゲート内: アプリデリゲート内:
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
3. 一部の vcs でステータスバーのフォントの色が異なる
- (void)viewWillAppear:(BOOL)animated{
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
}
2. info.plist で、[コントローラベースのステータス バーの表示の表示] を [はい] に設定するか、設定しません。
View コントローラベースのステータス バーの外観のデフォルト値は YES です。
View コントローラベースのステータス バーの表示が YES の場合。
その場合、[UIApplicationsharedApplication].statusBarStyle は無効です。
次の方法を使用します。
1. vc のpreferredStatusBarStyleメソッドをvcで書き換えます。
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleDefault;
}
2. viewDidload での呼び出し: [self setNeedsStatusBarAppearanceUpdate];
ただし、vc が nav にある場合、上記のメソッドは役に立たず、vc のpreferredStatusBarStyle メソッドを呼び出す必要はまったくありません。
理由は、[self setNeedsStatusBarAppearanceUpdate] 発行後は、
ナビゲーション コントローラーのpreferredStatusBarStyleメソッドのみが呼び出され、
vcのpreferredStatusBarStyleyメソッドは呼び出されないためです。
解決策は 2 つあります。
方法 1:
navbar の barStyle プロパティを設定すると、ステータス バーのフォントと背景色に影響します。次のように。
//status bar的字体为白色
//导航栏的背景色是黑色。
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
//status bar的字体为黑色
//导航栏的背景色是白色,状态栏的背景色也是白色。
//self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
方法 2:
ナビゲーション バーのサブクラスをカスタマイズし、このサブクラスのpreferredStatusBarStyle メソッドをオーバーライドします。
MyNav* nav = [[MyNav alloc] initWithRootViewController:vc];
self.window.rootViewController = nav;
@implementation MyNav
- (UIStatusBarStyle)preferredStatusBarStyle
{
UIViewController* topVC = self.topViewController;
return [topVC preferredStatusBarStyle];
}