iOS 7ナビゲーションバーのテキストと矢印の色


234

ナビゲーションバーの背景を黒に設定し、その中のすべての色をに設定したい。

だから、私はこのコードを使用しました:

[[UINavigationBar appearance] setTitleTextAttributes:
     [NSDictionary dictionaryWithObjectsAndKeys:
      [UIColor whiteColor],
      NSForegroundColorAttributeName,
      [UIColor whiteColor],
      NSForegroundColorAttributeName,
      [NSValue valueWithUIOffset:UIOffsetMake(0, -1)],
      NSForegroundColorAttributeName,
      [UIFont fontWithName:@"Arial-Bold" size:0.0],
      NSFontAttributeName,
      nil]];

しかし、戻るボタンのテキストの色矢印バーのボタンは、デフォルトの青色のままです。
下の画像のようにそれらの色を変更するにはどうすればよいですか?

ここに画像の説明を入力してください


1
([self.window respondsToSelector:@selector(setTintColor :)])の場合、AppDelegateを試してください。self.window.tintColor= [UIColor whiteColor];
Evgeniy S


興味深いことに、あなたのコードは私にとってうまく機能しました(テキストの色を白に変更したかっただけです)。ありがとう!
ウィリアムT.マラード

あなたが使っている青い色は何ですか?いい感じ!
ebi

@ebi共有したくない人もいます。カラーピッカーを使用してそれを選択するだけです。または.... there you go:RGB:(
18、60、133

回答:


753

の一部のプロパティの動作がiOS 7UINavigationBarから変更されました。以下の画像で確認できます。

ここに画像の説明を入力してください


共有したい2つの美しいリンク。詳細については、次のリンクを参照してください。

  1. iOS 7 UI移行ガイド
  2. iOS 7向けにアプリを更新する方法

barTintColorに関するAppleのドキュメントこう言っています:

この色は、translucentプロパティをNOに設定しない限り、デフォルトで半透明になります。

サンプルコード:

self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
[self.navigationController.navigationBar 
 setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
self.navigationController.navigationBar.translucent = NO;

私は試しました:self.nav.navigationBar.tintColor = [UIColor whiteColor]; self.nav.navigationBar.barTintColor = [UIColor colorWithRed:6.0 / 255.0 green:12.0 / 255.0 blue:19.0 / 255.0 alpha:1.0]; しかし、すべてはまだ青です。
1110

2
私は前にそれを読みましたが、これはテキストのみで矢印は変更しません。それはまだ青いです:(
1110

1
@ 1110:見てください:ティントカラーの使用
Bhavin

2
@チェルシー:この線はどうですか?:[self.navigationController.navigationBar setTitleTextAttributes:@{[UIFont fontWithName:@"YOURFONT" size:14], NSFontAttributeName}];
Bhavin 2014年

4
appDelegateでアプリ全体の色合いを変更できることを忘れないでください:[[UINavigationBar外観] setTintColor:[UIColor blackColor]];
simon_smiley 2015

85

ここに画像の説明を入力してください

これは理解するのに約半日かかりましたが、これは私にとってうまくいったものです。navigationControllerを初期化するrootViewController内に、このコードをviewDidAppearメソッド内に配置します。

//set bar color
[self.navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:85.0/255.0 green:143.0/255.0 blue:220.0/255.0 alpha:1.0]];
//optional, i don't want my bar to be translucent
[self.navigationController.navigationBar setTranslucent:NO];
//set title and title color
[self.navigationItem setTitle:@"Title"];
[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor]];
//set back button color
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor,nil] forState:UIControlStateNormal];
//set back button arrow color
[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];

これに関する私の完全な記事はこちら


1
戻る矢印の色を変更できない場合は、このスニペットで問題を解決できます。少なくとも、実際のrootViewControllerに追加するコードの最終行が必要です。
ロシア、2013年

うん、ジョン。昨日もこれで約1時間も無駄になりました。1つの問題(大きな問題)は、ドキュメントがすべての可能な属性を指摘するのがひどいことでした。それらがどこにリストされるかもしれないか考えはありますか?TY。
Alex Zavatone 2013

ありがとう@johnそれは私のカスタムカラーと重なっています。理由を教えてください。
Vaibhav Limbani 2014

新しい質問を作成する必要があると思います。私はあなたのコードとあなたが何をしているかを見ない限り、なぜあなたに言うことができませんでした。@MacGeek
John Riselvato 14

3
ありがとう、うまくいきました:) ただし、UITextAttributeTextColorはiOS 7で非推奨になりました。今はNSForegroundColorAttributeNameを使用する必要があります
YYamil

37

Swift3、iOS 10

AppDelegateでグローバルに色を割り当てるにはdidFinishLaunchingWithOptions

let textAttributes = [NSForegroundColorAttributeName:UIColor.white]
UINavigationBar.appearance().titleTextAttributes = textAttributes

Swift 4、iOS 11

let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
UINavigationBar.appearance().titleTextAttributes = textAttributes

21

ヴィンの答えは私にとってはうまくいきました。Xamarin.iOS / MonoTouchを使用するC#開発者向けの同じソリューションを次に示します。

var navigationBar = NavigationController.NavigationBar; //or another reference
navigationBar.BarTintColor = UIColor.Blue;
navigationBar.TintColor = UIColor.White;
navigationBar.SetTitleTextAttributes(new UITextAttributes() { TextColor = UIColor.White });
navigationBar.Translucent = false;

SetTitleTextAttributesを設定どおりに設定できることを知りませんでした。
Brad Moore

12

Swift / iOS8

let textAttributes = NSMutableDictionary(capacity:1)
textAttributes.setObject(UIColor.whiteColor(), forKey: NSForegroundColorAttributeName)
navigationController?.navigationBar.titleTextAttributes = textAttributes

3
let textAttributes = NSMutableDictionary(capacity:1)がNSMutableDictionary初期化の正しい呼び出しになりました。
juliensaad 2014年

12
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];

1
AppDelegate自体で設定でき、Appearanceプロキシを使用するため、このアプローチが好きです。
Niyog Ray 2015

8

UINavigationBarタイトルの色を正しく変更するには、次のコードを使用します。

[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor]];

UITextAttributeTextColor最新のiOS 7バージョンでは非推奨です。NSForegroundColorAttributeName代わりに使用してください。


5

タイトルのテキストサイズテキストの色を変更する場合は、2つのオブジェクトのNSDictionary titleTextAttributesを変更する必要があります。

    self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:13.0],NSFontAttributeName,
                                                                  [UIColor whiteColor], NSForegroundColorAttributeName, 
                                                                  nil];

2

以前の答えは正しいと思います、これは同じことをする別の方法です。誰かに役立つ場合に備えて、他のユーザーと共有しています。これは、ios7のナビゲーションバーのテキスト/タイトルの色を変更する方法です。

UIColor *red = [UIColor colorWithRed:254.0f/255.0f green:0.0f/255.0f blue:0.0f/255.0f alpha:1.0];
NSMutableDictionary *navBarTextAttributes = [NSMutableDictionary dictionaryWithCapacity:1];
[navBarTextAttributes setObject:red forKey:NSForegroundColorAttributeName ];
self.navigationController.navigationBar.titleTextAttributes = navBarTextAttributes;

1

それはそのようでAccessibilityでコントロールをiOS Settings使用すると、ナビゲーションバーのボタンに、賢明な色をやろうオーバーライドほとんどすべて。すべての設定がデフォルトの位置にあることを確認します(コントラストを上げる、太字のテキスト、ボタンの形状などをオフに設定します)。そうしないと、何も変更されません。一度実行すると、すべての色変更コードが期待どおりに機能し始めました。それらすべてをオフにする必要はないかもしれませんが、私はそれをさらに追求しませんでした。


まさに私に何が起こったか。「太字」がオンの場合、バーボタンアイテムのティントカラーを変更できませんでした。それは良くない。今では代わりにグラフィックを使用する必要があります:-(
Ken

0

Swift 5 / iOS 13

コントローラのタイトルの色を変更するには:

UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.