Ответ 1
[navigationController.navigationBar setBarStyle:UIBarStyleBlack];
Я пытаюсь настроить navigationBar контроллера навигации в iOS7, а цвет заголовка не меняется. Я делаю следующее:
[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]}];
Я добавлю две вещи:
Сначала наступает ключ, затем объект.
Если вы хотите глобально изменить атрибуты заголовка навигационного контроллера, используйте внешний вид api:
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]}];
Я бы поставил этот внешний вид api в свой делегат приложения didFinishLaunchingWithOptions.
UPDATE: возможно также разместить эквиваленты Swift.
Чтобы обновить navigationBar для отдельного контроллера просмотра, можно использовать:
self.navigationController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
Чтобы изменить внешний вид навигационной панели во всем приложении, можно использовать:
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
Не работает для меня. Использование UINavigation в качестве модального контроллера.
Очевидно, цвет заголовка должен быть установлен на уровне uiapplication
Edit:
Лучший способ - изменить заголовок навигации в каждом контексте VC:
[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName,nil]];
В быстрой последовательности вы сделаете следующее:
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";
работы.