web-dev-qa-db-ja.com

UINavigationControllerは、ナビゲーションバーの色をグローバルおよびプログラムで変更します

このコードは、アプリケーション内のあらゆる場所でUINavigationBarの色を変更できます。ただし、使用するUIColorUINavigationBarは変更されませんUINavigationController(私のものはUIStoryboardに由来します) )。

UIColor* navBarColor = [UIColor colorWithRed:arc4random()%100/100.0 
                                       green:arc4random()%100/100.0 
                                        blue:arc4random()%100/100.0 
                                       alpha:1];
[[UINavigationBar appearance] setTintColor:navBarColor];

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent];
[[UINavigationBar appearance] setAlpha:0.7];

UINavigationController'sナビゲーションバーのappearanceオブジェクトにアクセスする方法はありますか?個々のコントローラーの色合いを設定する方法は知っていますが、グローバルに制御したいです。彼らがどのように見えるか。

更新:これは私の間違いでした。コードはすべてのUIColorUINavigationBarsを変更しますが、ルートナビゲーションコントローラーをカバーおよびアンカバーする必要があります(たとえば、モーダルビューコントローラーを表示する)。新しいUIColors!で自分自身を再描画します!

ありがとうございました!

20
Alex Stone

Navbarの色を即座に変更し、その後の起動の設定を記憶する完全なソリューションは、次の場所にあります。 iPhone iOSオンデマンドでUINavigationBarを再描画する方法?

4
Alex Stone

IOS 8では、これにより色合いを設定できます。

self.navigationController.navigationBar.barTintColor = [UIColor redColor];
19
Ashish

UINavigationControllerを宣言するとき、これを試してください:

UINavigationController *myNavController = 
[[UINavigationController alloc] initWithRootViewController:myRootViewController];
myNavController.navigationBar.tintColor = 
    [UIColor colorWithRed:arc4random() % 100 / 100.0f
                    green:arc4random() % 100 / 100.0f
                     blue:arc4random() % 100 / 100.0f
                    alpha:1.0f];
14
demon9733

appearanceプロキシを使用して、バーの色をグローバルに変更できます。

NSDictionary *textTitleOptions = 
[NSDictionary dictionaryWithObjectsAndKeys:[UIColor darkGrayColor], 
                                           UITextAttributeTextColor, 
                                           [UIColor whiteColor],  
                                           UITextAttributeTextShadowColor, nil];

[[UINavigationBar appearance] setTitleTextAttributes:textTitleOptions];
textTitleOptions = 
 [NSDictionary dictionaryWithObjectsAndKeys:[UIColor darkGrayColor], 
                                            UITextAttributeTextColor, nil];
[[UINavigationBar appearance] setTintColor:[UIColor redColor]];
[[UIToolbar appearance] setTintColor:[UIColor redColor]];
[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]];
13
Nilesh