Я знаю, как изменить UINavigationBar
фоновое изображение, выполнив
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nabbar"] forBarMetrics:UIBarMetricsDefault];
и я знаю, как настроить полоску на разные цвета внутри каждого Views
..... Теперь я хочу изменить цвет фона без использования изображения на сплошной цвет из app delegate
. Я не хочу устанавливать его каждый раз для каждого вида и не хочу писать файл CGRect
.
Я пробовал, [[UINavigationBar appearance] setBackgroundColor:[UIColor colorWithRed:33/255.0 green:34/255.0 blue:36/255.0 alpha:1.0]];
но у меня не получается, и я нигде не могу найти код, который работает в делегате приложения.
Может ли кто-нибудь указать мне правильное направление?
источник
tintColor
градиентом останусь. Если вы не хотите иметь этот градиент, вам нужно создать подкласс UINavigationBar ИЛИ, чтобы создать UIImage для внешнего вида.navigationBar.barTintColor = myColor;
translucent
свойство просто невозможно установить с помощью UIAppearance в iOS 6 и iOS 7. Это[[UINavigationBar appearance] setTranslucent:NO]
приведет к сбою приложения сNSInvalidArgumentException
ошибкой. Используйте[self.navigationController.navigationBar setTranslucent:NO]
или отмените выбор прозрачности с помощью IB.UINavigationBar.appearance().barTintColor = myColor
UINavigationBar.appearance().isTranslucent = false
Чтобы изменить цвет фона, а не оттенок, подойдет следующий фрагмент кода:
[self.navigationController.navigationBar setBarTintColor:[UIColor greenColor]]; [self.navigationController.navigationBar setTranslucent:NO];
источник
UIViewControllers
, а этот будет показывать эффекты при каждом вызове.Для этого в iOS 7:
[[UINavigationBar appearance] setBarTintColor:myColor];
источник
Синтаксис Swift:
UINavigationBar.appearance().barTintColor = UIColor.whiteColor() //changes the Bar Tint Color
Я просто поместил это в AppDelegate didFinishLaunchingWithOptions, и он сохраняется во всем приложении
источник
Swift :
self.navigationController?.navigationBar.barTintColor = UIColor.red self.navigationController?.navigationBar.isTranslucent = false
источник
Вы можете легко сделать это с помощью Xcode 6.3.1. Выберите панель навигации в структуре документа. Выберите Инспектор атрибутов. Снимите флажок "Прозрачный". Установите оттенок полосы на желаемый цвет. Выполнено!
источник
Как упоминается в других ответах, вы можете использовать
setTintColor:
, но вам нужен сплошной цвет, и невозможно установить цвет оттенка AFAIK.Решение состоит в том, чтобы создать изображение программно и установить это изображение в качестве фонового изображения для всех панелей навигации через
UIAppearance
. Что касается размера изображения, я не уверен, подойдет ли изображение размером 1 x 1 пиксель или вам нужен точный размер панели навигации. Проверьте второй ответ на этот вопрос. чтобы узнать, как создать изображение.В качестве совета я не люблю «перегружать» делегата приложения подобными вещами. Я стараюсь создать класс с именем
AppearanceConfiguration
только с одним общедоступным методом, вconfigureAppearance
котором я устанавливаю все необходимые параметры UIAppearance, а затем вызываю этот метод из делегата приложения.источник
Вы можете установить цвет фона UINavigation с помощью этого кода в любом контроллере представления
self.navigationController.navigationBar.backgroundColor = [UIColor colorWithRed:10.0f/255.0f green:30.0f/255.0f blue:200.0f/255.0f alpha:1.0f];
источник
В Swift 4.2 и Xcode 10.1
Вы можете изменить цвет панели навигации с вашего AppDelegate прямо на весь проект.
В
didFinishLaunchingWithOptions launchOptions:
записи ниже , чтобы строки кодаUINavigationBar.appearance().tintColor = UIColor.white UINavigationBar.appearance().barTintColor = UIColor(red: 2/255, green: 96/255, blue: 130/255, alpha: 1.0)
Вот
tintColor предназначен для установки фоновых изображений, таких как изображения кнопок «Назад», строк меню и т. д. (см. левое и правое изображения меню ниже)
barTintColor предназначен для цвета фона панели навигации
Если вы хотите установить определенный цвет панели навигации контроллера представления, напишите ниже код в
viewDidLoad()
//Add navigation bar colour navigationController?.navigationBar.barTintColor = UIColor(red: 2/255, green: 96/255, blue: 130/255, alpha: 1.0) navigationController?.navigationBar.tintColor = UIColor.white
источник
Цветовой код здесь является проблемой. Вместо 195/255 используйте 0.7647 или 195.f / 255.f Проблема в том, что преобразование числа с плавающей запятой не работает должным образом. Попробуйте использовать точное значение с плавающей запятой.
источник