Текст панели навигации IOS 7 и цвет стрелки
Я хочу установить фон для панели навигации черный, а все цвета внутри него будут белыми.
Итак, я использовал этот код:
[[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]];
Но кнопка цвет текста, стрелка и кнопка по-прежнему имеют значение синий цвет.
Как изменить эти цвета, как на изображении ниже?
![enter image description here]()
Ответы
Ответ 1
Поведение от некоторых свойств UINavigationBar
изменилось с iOS 7. Вы можете увидеть на изображении ниже:
![enter image description here]()
Две красивые ссылки, которые я хотел бы поделиться с вами. Для получения дополнительной информации вы можете просмотреть эти ссылки:
Документация Apple для barTintColor говорит:
Этот цвет сделан полупрозрачным по умолчанию, если вы не установили полупрозрачное свойство 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;
Ответ 2
![enter image description here]()
Это заняло у меня около полудня, чтобы понять, но это то, что сработало для меня.
Внутри rootViewController, который инициализирует navigationController, я помещаю этот код в свой метод 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]];
Мой полный пост на этом здесь
Ответ 3
Swift3, ios 10
Чтобы глобально назначить цвет, в AppDelegate didFinishLaunchingWithOptions
:
let textAttributes = [NSForegroundColorAttributeName:UIColor.white]
UINavigationBar.appearance().titleTextAttributes = textAttributes
Swift 4, iOS 11
let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
UINavigationBar.appearance().titleTextAttributes = textAttributes
Ответ 4
Ответ на Vin отлично подойдет для меня. Вот то же самое решение для разработчиков С#, использующих Xamarin.iOS/MonoTouch:
var navigationBar = NavigationController.NavigationBar; //or another reference
navigationBar.BarTintColor = UIColor.Blue;
navigationBar.TintColor = UIColor.White;
navigationBar.SetTitleTextAttributes(new UITextAttributes() { TextColor = UIColor.White });
navigationBar.Translucent = false;
Ответ 5
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
Ответ 6
Swift/iOS8
let textAttributes = NSMutableDictionary(capacity:1)
textAttributes.setObject(UIColor.whiteColor(), forKey: NSForegroundColorAttributeName)
navigationController?.navigationBar.titleTextAttributes = textAttributes
Ответ 7
Чтобы изменить цвет заголовка UINavigationBar
, правильный способ использования этого кода:
[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor]];
UITextAttributeTextColor
устарел в последней версии ios 7. Вместо этого используйте NSForegroundColorAttributeName
.
Ответ 8
Если вы хотите изменить заголовок размер текста и цвет текста, вам необходимо изменить заголовок NSDictionaryTextAttributes для двух его объектов:
self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:13.0],NSFontAttributeName,
[UIColor whiteColor], NSForegroundColorAttributeName,
nil];
Ответ 9
Я думаю, что предыдущие ответы верны, это другой способ сделать то же самое. Я разделяю его здесь с другими на случай, если он станет полезным для кого-то. Вот как вы можете изменить цвет текста/заголовка для навигационной панели в 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;
Ответ 10
Кажется, что Accessibility
управляет в iOS Settings
переопределяет почти все, что вы пытаетесь сделать по-цветовым для кнопок панели навигации. Убедитесь, что у вас есть все настройки по умолчанию (установите контрастность, полужирный текст, формы кнопок и т.д.), Иначе вы ничего не увидите. Как только я это сделал, весь код изменения цвета начал работать, как ожидалось. Возможно, вам не нужно будет отключать их, но я не преследовал их дальше.