[navigationController.navigationBar setBarStyle:UIBarStyleBlack];
Внешний вид API продолжает развиваться, и теперь UITextAttributeTextColor заменяется на NSForegroundColorAttributeName.
[navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
Я добавлю две вещи:
Сначала идет ключ, затем объект.
Если вы хотите глобально изменить атрибуты заголовка вашего контроллера навигации, используйте API внешнего вида:
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]}];
Я бы поместил вызов API внешнего вида в метод didFinishLaunchingWithOptions делегата приложения.
ОБНОВЛЕНИЕ: может также опубликовать эквиваленты Свифта.
Чтобы обновить панель навигации для отдельного контроллера представления, можно использовать:
self.navigationController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
Чтобы изменить внешний вид панели навигации во всем приложении, можно использовать:
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
Не работает для меня. Использование UINavigation в качестве модального контроллера вида.
Очевидно, цвет заголовка должен быть установлен на уровне приложения
Редактировать:
Лучший способ - изменить заголовок навигации в каждом контексте VC:
[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName,nil]];
Версия Swift + UIAppearance:
UINavigationBar.appearance().barTintColor = .blackColor()
UINavigationBar.appearance().barStyle = .Black
В быстром вы будете делать следующее:
self.navigationController.navigationBar.titleTextAttributes = [
NSForegroundColorAttributeName : UIColor.redColor(),
NSFontAttributeName : UIFont.systemFontOfSize(20)
]
Проблема в коде 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 , который вы хотите, чтобы заголовок был.