IOS7のNavigation ControllerのnavigationBarをカスタマイズしようとしていますが、タイトルの色は変わりません。私は次のことをしています:
[navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:46.0f/256.0f green:46.0f/256.0f blue:46.0f/256.0f alpha:1]];
[navigationController.navigationBar setTranslucent:NO];
[navigationController.navigationBar setTitleTextAttributes:@{[UIColor whiteColor]:UITextAttributeTextColor}];
[self presentViewController:navigationController animated:YES completion:nil];
NavigationBarの半透明性はオフになり、暗くなりますが、タイトルも暗くなります。また、カスタムラベルを作成し、それをタイトルビューとして設定しようとしましたが、あまり運はありません。
タイトルの色を変更するにはどうすればよいですか?
[navigationController.navigationBar setBarStyle:UIBarStyleBlack];
外観APIは進化を続けており、UITextAttributeTextColorはNSForegroundColorAttributeNameに置き換えられました。
[navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
次の2つを追加します。
キーが最初に来て、次にオブジェクトが来ます。
ナビゲーションコントローラーのタイトル属性をグローバルに変更する場合は、外観APIを使用します。
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]}];
アプリのデリゲートのdidFinishLaunchingWithOptionsメソッドにその外観API呼び出しを配置します。
更新:Swiftと同等のものを投稿することもできます。
個々のView ControllerのnavigationBarを更新するには、次を使用できます。
self.navigationController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
アプリ全体でナビゲーションバーの外観を変更するには、以下を使用できます。
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
私のために働いていません。 UINavigationをモーダルビューコントローラーとして使用する。
どうやらタイトルの色をUIアプリケーションレベルに設定する必要があるようです
編集:
最善の方法は、各VCコンテキストでナビゲーションタイトルを変更することです。
[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName,nil]];
Swiftでは、次のことを行います。
self.navigationController.navigationBar.titleTextAttributes = [
NSForegroundColorAttributeName : UIColor.redColor(),
NSFontAttributeName : UIFont.systemFontOfSize(20)
]
Swift + UIAppearanceバージョン:
UINavigationBar.appearance().barTintColor = .blackColor()
UINavigationBar.appearance().barStyle = .Black
OPのコードの問題は次の行です。
[navigationController.navigationBar setTitleTextAttributes:@{[UIColor whiteColor]:UITextAttributeTextColor}];
テキストの色の属性名と値は混同されます。そのはず
[navigationController.navigationBar setTitleTextAttributes:@{UITextAttributeTextColor:[UIColor whiteColor]}];
実際にはバグのように見えます。試して
myViewcontroller.title = @"";
navigationController.navigationBar.barStyle = UIBarStyleBlack;
myViewcontroller.title = @"TITLE";
動作します。
NSForegroundColorAttributeNameはNSAttributedString.Key.foregroundColorに名前が変更されました
let navBarAppearance = self.navigationController!.navigationBar
navBarAppearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]
UIColor.whiteを使用しました。タイトルにしたいUIColorを挿入するだけです。