0

こんにちは、このようなナビゲーションバーに色を付けている小さなiPhoneアプリケーションを開発しています

[self.navigationController.navigationBar setTranslucent:NO];    
[self.navigationController.navigationBar setBarTintColor:[UIColor redColor]];

しかし、このためステータスバーも赤色になります。白に変えたい。次の方法で試しましたが、うまくいきません。

私が設定したinfo.plistファイルでView controller-based status bar appearance = "NO"

その後application:didFinishLaunchingWithOptions:セットで[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

次にUIViewcontrollerで

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

しかし、上記の方法は私にとってはうまくいきません。同じ色のナビゲーション バーとステータス バー。ステータスバーの色を白にしたい。私のアプリケーションは、1 つの UIView コントローラーと 1 つのナビゲーション コントローラーを持つ非常にシンプルです。私は何か間違ったことをしていますか?助けが必要。ありがとうございました 。

4

1 に答える 1

3

UIStatusBarStyleLightContentステータスバーに明るい色のテキストを表示するように指示しますが、それでも透明です。また、ナビゲーション コントローラーはナビゲーション バーの位置を と報告するため、UIBarPositionTopAttachedナビゲーション バーの色がステータス バーの下に広がっていることがわかります。

探しているものを達成するための 2 つのアイデアを次に示します。

ナビゲーション コントローラーをサブクラス化し、実装- (UIBarPosition)positionForBar:(id<UIBarPositioning>)barして return しUIBarPositionTopます。これにより、ナビゲーション バーがステータス バーの下に伸びず、代わりにナビゲーション バーのスーパービュー (通常は白) が表示されます。

または、ナビゲーション コントローラーをサブクラス化し、高さ 20pt のサブビューをナビゲーション バーの上に追加し、viewDidLayoutSubviewsサブビューを正しい向きに配置してサイズ変更することをお勧めします。これで、このビューに好きな色を付けることができ、それがステータス バーの色になります。

編集:コメントに基づいて、positionForBar:アプローチが機能しない場合があります。

于 2014-04-25T04:29:14.967 に答える