iOS開発はステータスバーのフォント色を設定します

ステータス バーのフォントは黒です: UIStatusBarStyleDefault
ステータス バーのフォントは白です: UIStatusBarStyleLightContent

1. info.plist で、View コントローラーベースのステータス バーの外観を NO** に設定します。

ステータス バーのフォントの色は次のプロパティによってのみ設定され、デフォルトは白です。

// default is UIStatusBarStyleDefault
[UIApplication sharedApplication].statusBarStyle

個々の VC でステータス バーのフォントの色が異なる問題を解決する方法

  1. info.plist で、View コントローラーベースのステータス バーの外観を NO に設定します。
  2. アプリデリゲート内: アプリデリゲート内:
[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];
}

おすすめ

転載: blog.csdn.net/biyuhuaping/article/details/85709521