Изменение цвета навигационных элементов по всему приложению?
Я пытаюсь изменить оттенок. Цвет задней кнопки в iOS 7. Теперь Есть ли способ изменить все элементы навигации по всему приложению на определенный цвет? Это то, что я имею в одном контроллере представления на данный момент:
self.editButtonItem.tintColor = [UIColor whiteColor];
self.navigationItem.backBarButtonItem.tintColor = [UIColor whiteColor];
self.navigationController.navigationBarHidden = NO;
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
self.navigationController.navigationBar.translucent = NO;
self.title = @"Inbox";
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : [UIColor whiteColor]};
Ответы
Ответ 1
UINavigationItem
не является представлением и не имеет цвета.
Вместо этого вы хотите изменить цвет оттенка UIBarButtonItem
.
Используя прокси-сервер UIAppearance
, вы можете сделать
[[UIBarButtonItem appearance] setTintColor:[UIColor whiteColor]];
Это изменит tintColor
каждого UIBarButtonItem
в приложении.
Вы можете использовать ту же стратегию для изменения UINavigationBar
barTintColor
и titleTextAttributes
:
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]]; // this will change the back button tint
[[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
К сожалению нет способа изменить свойство translucent
с помощью прокси-сервера, поэтому вам придется делать это на каждом баре.
Ответ 2
Быстрый ответ
UINavigationBar.appearance().backgroundColor = UIColor.blackColor()
UINavigationBar.appearance().barTintColor = UIColor.blackColor()
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
UINavigationBar.appearance().tintColor = UIColor.blackColor()
UIBarButtonItem.appearance().tintColor = UIColor.blackColor()
UITabBar.appearance().backgroundColor = UIColor.blackColor()
UITabBar.appearance().tintColor = UIColor.blackColor()
UITabBar.appearance().unselectedItemTintColor = UIColor.darkGrayColor()
поместите его в приложение приложения AppDelegate (приложение: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
Ответ 3
Начиная с iOS7 вы можете установить оттенок для всех элементов навигации только для того, чтобы поддерживать постоянный внешний вид и приложение во всем приложении:
if ([self.window respondsToSelector:@selector(setTintColor:)]) {
self.window.tintColor = [UIColor redColor];
}
Также посмотрите на мой ответ здесь для рекомендуемых материалов для чтения и просмотра:
Ошибка StatusBar в iOS7?
Ответ 4
В методе superViewDidLoad
.
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
он изменит цвет цвета навигационного элемента.
И то же самое произойдет с кнопкой.
Ответ 5
Это работает для изменения цвета кнопки:
[[UINavigationBar appearance] setTintColor:[UIColor redColor]];
Протестировано с iOS 9.3, iPhone и iPad. Заголовок navigationBar по-прежнему будет окрашен цветом по умолчанию. Это было немного запутанно.
Ответ 6
Для цвета метки заголовка мы можем использовать
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]