3

ステータス バーのテキストの色に問題があります。テキストの色を白にしたいのですが、モーダル ビューでは黒のままにします。

次の構成があります。

  • 「Opens in 5.1」、「Project Deployment target 7.0」、「View as iOS7 and later」が設定されたストーリーボード
  • UITabBarViewController
  • 4UINavigationControllers
  • UIViewController各ナビゲーション コントローラーには、内部のカスタム サブクラスがあります。

UINavigationBar の背景色を 経由で暗く設定しましたappearance

View controller-based status bar appearanceに設定YES

私のサブクラスにUITabBarViewControllerは次のメソッドがあります:

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setNeedsStatusBarAppearanceUpdate];
}

これらのメソッドは、アプリケーションの開始後に呼び出されます。

UIViewControllersサブクラスにも同じメソッド呼び出しがあります。

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent; // This method never called
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setNeedsStatusBarAppearanceUpdate];
}

また、の戻り値を to に変更しようとし-preferredStatusBarStyleましたUIStatusBarStyleDefault(まあ、テキストを黒でペイントする必要があることは知っていますが、とにかく試しました)

ストーリーボードでステータス バー オプションをライト コンテンツに設定する場合も同じです。うまくいきません。

私に似たSOに関する質問がたくさんあることは知っていますが、提案された解決策は私の状況では役に立ちません。

私のステータスバーはまだこのように見えます:

ステータスバー

そして、その色を白に変更したい=/

4

3 に答える 3

2

まず第一に、サブクラス- (UIStatusBarStyle)preferredStatusBarStyleでは決して呼び出されないと言います。UIViewControllerそれは正常です。このメソッドは、ルート ビュー コントローラーによって呼び出されます。あなたの場合、それはUITabBarViewControllerです。

あなたはまた、しようとしたとも言いますset Status Bar option to Light Content in Storyboard。よく見ると、という名前のセクションでそれを行っているはずですSimulated metrics。タイトルが示すように、ここでの変更はシミュレートされています...

UIViewControllerBasedStatusBarAppearanceInfo.plist にキーを追加して、YES に設定することをお勧めします。

于 2014-01-29T13:50:40.660 に答える
0

これを RootViewController に設定する必要があります:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
于 2014-01-29T13:46:49.000 に答える