1. ホーム
  2. アイオス

[解決済み】preferredStatusBarStyleが呼び出されない。

2022-04-01 22:05:52

質問

私は このスレッド をオーバーライドするために -preferredStatusBarStyle が、呼び出されない。 何かオプションを変更することで、呼び出せるようになるのでしょうか?(私はプロジェクトでXIBを使用しています)。

解決方法は?

考えられる根本的な原因

私は同じ問題に直面し、アプリケーションウィンドウにルートビューコントローラを設定していなかったため、この問題が発生したことを突き止めました。

UIViewController を実装していたのですが preferredStatusBarStyle が使われていたのは UITabBarController 画面上のビューの外観を制御するものである。

ルートビューコントローラがこれを指すように設定すると UITabBarController を使用すると、ステータスバーの変更が予想通り正しく機能するようになりました(そして preferredStatusBarStyle メソッドが呼び出されるようになっていました)。

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ... // other view controller loading/setup code

    self.window.rootViewController = rootTabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

代替方法(iOS 9で非推奨)

また、各ビューコントローラの背景色に応じて、以下のメソッドのいずれかを適宜呼び出すことも可能です。 setNeedsStatusBarAppearanceUpdate :

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

または

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];

を設定する必要があることに注意してください。 UIViewControllerBasedStatusBarAppearance から NO をplistファイルに追加してください。