235

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

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

[[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]];

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

ナビゲーションバー

4

11 に答える 11

756

の一部のプロパティの動作が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;
于 2013-09-26T13:41:52.917 に答える
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]];

これに関する私の完全な投稿はこちら

于 2013-10-03T13:48:03.950 に答える
38

Swift3、ios10

色をグローバルに割り当てるには、 AppDelegate で次のようにしdidFinishLaunchingWithOptionsます。

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

スイフト 4、iOS 11

let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
UINavigationBar.appearance().titleTextAttributes = textAttributes
于 2015-12-23T13:38:19.980 に答える
12

スイフト/iOS8

let textAttributes = NSMutableDictionary(capacity:1)
textAttributes.setObject(UIColor.whiteColor(), forKey: NSForegroundColorAttributeName)
navigationController?.navigationBar.titleTextAttributes = textAttributes
于 2014-09-27T12:28:34.763 に答える
12
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
于 2014-06-28T21:25:12.397 に答える
8

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

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

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

于 2013-11-04T01:14:59.427 に答える
5

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

    self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:13.0],NSFontAttributeName,
                                                                  [UIColor whiteColor], NSForegroundColorAttributeName, 
                                                                  nil];
于 2015-08-04T10:33:05.987 に答える
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;
于 2014-01-05T23:42:02.160 に答える
1

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

于 2015-04-15T22:41:31.680 に答える