このコードは、アプリケーション内のあらゆる場所でUINavigationBar
の色を変更できます。ただし、使用するUIColor
のUINavigationBar
は変更されません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
オブジェクトにアクセスする方法はありますか?個々のコントローラーの色合いを設定する方法は知っていますが、グローバルに制御したいです。彼らがどのように見えるか。
更新:これは私の間違いでした。コードはすべてのUIColor
のUINavigationBars
を変更しますが、ルートナビゲーションコントローラーをカバーおよびアンカバーする必要があります(たとえば、モーダルビューコントローラーを表示する)。新しいUIColors
!で自分自身を再描画します!
ありがとうございました!
Navbarの色を即座に変更し、その後の起動の設定を記憶する完全なソリューションは、次の場所にあります。 iPhone iOSオンデマンドでUINavigationBarを再描画する方法?
IOS 8では、これにより色合いを設定できます。
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
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];
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]];