it-swarm.com.ru

Как изменить цвет фона UINavigationBar из AppDelegate

Я знаю, как изменить фоновое изображение 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]];, но я не работаю, и я не могу найти код в любом месте, который работает в делегате приложения.

Может ли кто-нибудь, пожалуйста, указать мне в правильном направлении?

86
Jonathan Thurft

Вы можете использовать [[UINavigationBar appearance] setTintColor:myColor];

Начиная с iOS 7 вам нужно установить [[UINavigationBar appearance] setBarTintColor:myColor];, а также [[UINavigationBar appearance] setTranslucent:NO].

[[UINavigationBar appearance] setBarTintColor:myColor];
[[UINavigationBar appearance] setTranslucent:NO];
196
Seb Thiebaud

Чтобы изменить цвет фона, а не оттенок, будет работать следующий фрагмент кода:

[self.navigationController.navigationBar setBarTintColor:[UIColor greenColor]];
[self.navigationController.navigationBar setTranslucent:NO];
101
LJ1

Для этого в iOS 7:

[[UINavigationBar appearance] setBarTintColor:myColor];
18
Lasse Bunk

быстрый синтаксис:

    UINavigationBar.appearance().barTintColor = UIColor.whiteColor() //changes the Bar Tint Color

Я просто поместил это в AppDelegate didFinishLaunchingWithOptions, и оно сохраняется во всем приложении.

14
Dustin Williams

Вы можете легко сделать это с Xcode 6.3.1. Выберите панель навигации в структуре документа. Выберите инспектора атрибутов. Снимите флажок Прозрачный. Установите Bar Tint на нужный вам цвет. Готово!

6
ronm333

Swift:

self.navigationController?.navigationBar.barTintColor = UIColor.red
self.navigationController?.navigationBar.isTranslucent = false
5
Hemang

Как уже упоминалось в других ответах, вы можете использовать setTintColor:, но вы хотите получить сплошной цвет, а настроить цвет оттенка AFAIK невозможно.

Решение состоит в том, чтобы создать изображение программным способом и установить это изображение в качестве фонового изображения для всех панелей навигации с помощью UIAppearance. Что касается размера изображения, я не уверен, будет ли работать изображение размером 1x1 пиксель или вам нужен точный размер навигационной панели. Проверьте второй ответ этот вопрос , чтобы увидеть, как создать изображение.

В качестве совета, я не люблю "перегружать" делегат приложения такими вещами. Я обычно создаю класс с именем AppearanceConfiguration только с одним открытым методом configureAppearance, в котором я устанавливаю все нужные вам UIAppearance, а затем вызываю этот метод из делегата приложения.

3
e1985

Вы можете установить цвет фона UINavigation с помощью этого кода в любом контроллере представления

self.navigationController.navigationBar.backgroundColor = [UIColor colorWithRed:10.0f/255.0f green:30.0f/255.0f blue:200.0f/255.0f alpha:1.0f];
2
amar

В 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

enter image description here

0
iOS