web-dev-qa-db-ja.com

iOS 7のナビゲーションバーのカスタマイズ-タイトルの色が機能しない

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の半透明性はオフになり、暗くなりますが、タイトルも暗くなります。また、カスタムラベルを作成し、それをタイトルビューとして設定しようとしましたが、あまり運はありません。

タイトルの色を変更するにはどうすればよいですか?

29
Live2Enjoy7
[navigationController.navigationBar setBarStyle:UIBarStyleBlack];
7
Live2Enjoy7

外観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()]
65
Mark Semsel

私のために働いていません。 UINavigationをモーダルビューコントローラーとして使用する。

どうやらタイトルの色をUIアプリケーションレベルに設定する必要があるようです

編集:

最善の方法は、各VCコンテキストでナビゲーションタイトルを変更することです。

[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName,nil]];
11
wolffan

Swiftでは、次のことを行います。

self.navigationController.navigationBar.titleTextAttributes = [
    NSForegroundColorAttributeName : UIColor.redColor(),
    NSFontAttributeName : UIFont.systemFontOfSize(20)
]
4
Antoine

Swift + UIAppearanceバージョン:

    UINavigationBar.appearance().barTintColor = .blackColor()
    UINavigationBar.appearance().barStyle = .Black
4
superarts.org

OPのコードの問題は次の行です。

[navigationController.navigationBar setTitleTextAttributes:@{[UIColor whiteColor]:UITextAttributeTextColor}];

テキストの色の属性名と値は混同されます。そのはず

[navigationController.navigationBar setTitleTextAttributes:@{UITextAttributeTextColor:[UIColor whiteColor]}];
3
mhoeller

実際にはバグのように見えます。試して

myViewcontroller.title = @"";
navigationController.navigationBar.barStyle = UIBarStyleBlack;
myViewcontroller.title = @"TITLE";

動作します。

0
Jason

In Swift 4

NSForegroundColorAttributeNameNSAttributedString.Key.foregroundColorに名前が変更されました

そのため、navigationItemのタイトルの色を変更する場合:

let navBarAppearance = self.navigationController!.navigationBar    
navBarAppearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]


UIColor.whiteを使用しました。タイトルにしたいUIColorを挿入するだけです。

0
Richard Poutier