Похоже, заголовок панели навигации iOS по умолчанию белый. Есть ли способ изменить его на другой цвет?
Я знаю о navigationItem.titleView
подходе с использованием изображения. Поскольку мои дизайнерские навыки ограничены, и я не смог получить стандартный глянцевый, я предпочитаю менять цвет текста.
Любое понимание будет высоко ценится.
ios
uinavigationbar
navigationitem
Каллум
источник
источник
Ответы:
Современный подход
Современный способ для всего контроллера навигации ... сделать это один раз, когда загружен корневой вид вашего контроллера навигации.
Тем не менее, это, кажется, не влияет на последующие представления.
Классический подход
Старый способ для каждого контроллера представления (эти константы для iOS 6, но если вы хотите сделать это для каждого контроллера представления в iOS 7, вам понадобится тот же подход, но с разными константами):
Вы должны использовать
UILabel
какtitleView
изnavigationItem
.Этикетка должна:
label.backgroundColor = [UIColor clearColor]
).label.font = [UIFont boldSystemFontOfSize: 20.0f]
).label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]
).label.textAlignment = NSTextAlignmentCenter
(UITextAlignmentCenter
для старых SDK).Установите цвет текста ярлыка на любой другой, который вам нужен. Вы действительно хотите цвет, который не заставляет текст смешиваться в тень, которая будет трудно читать.
Я решил это методом проб и ошибок, но ценности, которые я придумал, в конечном итоге слишком просты, чтобы Apple не выбрала их. :)
Если вы хотите , чтобы убедиться в этом, отказаться от этого кода в
initWithNibName:bundle:
вPageThreeViewController.m
части от Apple образца NavBar . Это заменит текст с желтой меткой. Это должно быть неотличимо от оригинала, созданного кодом Apple, за исключением цвета.Изменить: Кроме того, прочитайте ответ Эрика Б. ниже. Мой код показывает эффект, но его код предлагает более простой способ установить это на существующий контроллер представления.
источник
sizeWithFont:
, он волшебным образом примет режим автоматического выравнивания стандартной метки.Я знаю, что это довольно старая ветка, но я думаю, что было бы полезно узнать для новых пользователей, что в iOS 5 появилось новое свойство для установки свойств заголовка.
Вы можете использовать UINavigationBar
setTitleTextAttributes
для установки шрифта, цвета, смещения и цвета тени.Кроме того, вы можете установить одинаковые атрибуты заголовка текста UINavigationBar по умолчанию для всех
UINavigationBars
приложения.Например вот так:
источник
В iOS 5 вы можете изменить цвет заголовка navigationBar следующим образом:
источник
UITextAttributeTextColor
доNSForegroundColorAttributeName
. Работает как шарм!self.navigationController.navigationBar.tintColor
не работает для меня. Это сделал.Основываясь на ответе Стивена Фишера, я написал этот фрагмент кода:
Преимущество этого кода, помимо правильной работы с фреймом, состоит в том, что если вы измените заголовок вашего контроллера, пользовательский вид заголовка также будет обновлен. Нет необходимости обновлять его вручную.
Еще одним большим преимуществом является то, что он позволяет очень просто включить пользовательский цвет заголовка. Все, что вам нужно сделать, это добавить этот метод в контроллер.
источник
Большинство из вышеперечисленных предложений устарели, для iOS 7 -
Кроме того, проверьте NSAttributedString.h для различных свойств текста, которые могут быть установлены.
источник
В IOS 7 и 8 вы можете изменить цвет заголовка, скажем, зеленый
источник
self.navigationController!.navigationBar.titleTextAttributes = NSDictionary(object: UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) as [NSObject : AnyObject]
self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
Чтобы держать вопрос в актуальном состоянии, я добавлю решение Alex RR , но в Swift :
Что приводит к:
источник
Способ 1 , установите его в IB:
Способ 2 , одна строка кода:
источник
titleTextAttributes
толькоРешение от tewha работает хорошо, если вы пытаетесь изменить цвет на странице, но я хочу иметь возможность менять цвет на каждой странице. Я сделал несколько небольших изменений, чтобы он работал на всех страницах
UINavigationController
NavigationDelegate.h
NavigationDelegate.m
источник
Начиная с iOS 5, мы должны установить цвет текста заголовка и шрифт панели навигации, используя словарь titleTextAttribute (предопределенный словарь в справочнике по классу контроллера UInavigation).
источник
Swift Version
Я нашел, что большинство из вас, ребята, представили ответы версии Objective_C
Я хотел бы реализовать эту функцию с помощью Swift для тех, кто в ней нуждается.
В ViewDidload
1. Чтобы сделать NavigationBar фон становится цветным (например: СИНИЙ)
2. Чтобы фон NavigationBar стал изображением (например, ABC.png)
3. Чтобы изменить заголовок NavigationBar (например: [Шрифт: Futura, 10] [Цвет: Красный])
Я надеюсь, что смогу помочь!
источник
Используйте приведенный ниже код в любом методе view-контроллера viewDidLoad или viewWillAppear.
источник
Коротко и сладко.
источник
Это мое решение на основе Стивенса
Единственная реальная разница в том, что я настраиваю позицию, если, в зависимости от длины текста, похоже, что Apple это делает.
Вы можете настроить значение 10 в зависимости от размера шрифта.
источник
Я столкнулся с проблемой с моими навигационными кнопками, выбрасывающими текст из центра (когда у вас есть только одна кнопка). Чтобы это исправить, я просто изменил размер кадра следующим образом:
источник
Я настроил фоновое изображение навигационного бара и элемент левой кнопки, а серый заголовок не соответствует фону. Тогда я использую:
изменить цвет оттенка на серый. И название теперь белое! Это то, что я хочу.
Надеюсь помочь также :)
источник
Рекомендуется установить self.title, так как он используется при нажатии дочерних панелей навигации или отображении заголовка на вкладках.
источник
Это довольно старая ветка, но я думаю дать ответ для настройки цвета, размера и вертикального положения заголовка панели навигации для iOS 7 и выше
Для цвета и размера
Для вертикального положения
Установить заголовок и назначить атрибут словаря
источник
Это работает для меня в Swift:
источник
navigationController?.navigationBar.titleTextAttributes = { if let currentAttributes = navigationController?.navigationBar.titleTextAttributes { var newAttributes = currentAttributes newAttributes[NSForegroundColorAttributeName] = navigationTintColor return newAttributes } else { return [NSForegroundColorAttributeName: navigationTintColor]}}()
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : UIColor.redColor};
Версия Swift 4 & 4.2:
источник
источник
чтобы установить размер шрифта заголовка я использовал следующие условия .. может быть полезным для всех
источник
Обновление поста Алекса Р.Р. с использованием новых текстовых атрибутов iOS 7 и современной цели c для уменьшения шума:
источник
Я считаю, что правильный способ установить цвет
UINavigationBar
:Код выше написан на подклассе
UINavigationBar
, очевидно работает и без подклассов.источник
[UINavigationBar appearance]
и устанавливать там атрибуты текста заголовка (учитывая хитрость, связанную с подклассамиUINavigationBar
, предпочтительное решение).Используйте как это для поддержки ориентации
источник
Это одна из тех вещей, которые отсутствуют. Лучше всего создать собственную панель навигации, добавить текстовое поле и таким образом управлять цветом.
источник
После того, как я столкнулся с той же проблемой (как и другие) с меткой, которая перемещается, когда мы вставляем кнопку в navBar (в моем случае у меня есть счетчик, который я заменяю кнопкой при загрузке даты), вышеуказанные решения не сработали для меня вот что сработало и постоянно держало этикетку в одном и том же месте:
источник
Вы должны вызвать [label sizeToFit]; после установки текста, чтобы предотвратить странные смещения, когда метка автоматически перемещается в представлении заголовка, когда другие кнопки занимают панель навигации.
источник
Может использовать этот метод в файле appdelegate и может использовать при каждом просмотре
источник
titleTextAttributes Показать атрибуты для текста заголовка панели.
@property (nonatomic, copy) NSDictionary * titleTextAttributes Обсуждение Вы можете указать шрифт, цвет текста, цвет тени текста и смещение тени текста для заголовка в словаре текстовых атрибутов, используя ключи атрибутов текста, описанные в Справочнике по NSString UIKit.
Доступность Доступно в iOS 5.0 и более поздних версиях. Объявлено в UINavigationBar.h
источник