Подтвердить что ты не робот

Изменение цвета оттенков UIBarButtonItem

У меня есть проект, использующий Storyboards, и всякий раз, когда я нажимаю контроллер вида с помощью segue, динамически созданная позиция кнопки панели всегда синяя.

enter image description here

Это сводит меня с ума. Поскольку этот объект создается динамически, я не могу установить его цвет в IB (например, я сделал это с предыдущими элементами кнопки).

Среди решений, которые я пробовал:

  • Установите его в приемник viewDidLoad
  • Установите его в ресивере viewDidAppear

    self.navigationItem.backBarButtonItem.tintColor = [UIColor whiteColor];

  • Когда я увидел, что это не совсем сработало, я попробовал вместо параметра leftBarButtonItem:

self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor];

  1. Я попробовал следующий код (который я получил из других ответов SO) в своем делете приложения, когда вызывается новое представление, и перед нажатием нового представления:

    [[UIBarButtonItem appearance] setTintColor:[UIColor whiteColor]];

Все ответы Google, которые я нашел, рекомендуют использовать приведенный выше код, но он не работает вообще для меня. Возможно, есть некоторые изменения в API-интерфейсе iOS 7? Независимо от того, как и где я пытаюсь установить "Категорий" на белый, он всегда является синим по умолчанию.

4b9b3361

Ответ 1

В iOS 7, чтобы установить цвет всех barButtonItems в вашем приложении, установите свойство tintColor в окне приложения в AppDelegate.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window.tintColor = [UIColor whiteColor];
    return YES;
}

Более подробная информация в Руководстве по переходу на iOS 7 для Apple iOS 7 (в частности, в разделе "Использование цвета оттенка" ).

*** ИЛИ ***

Основываясь на некоторых комментариях, вы также можете добиться этого с помощью прокси-сервера UINavigationBar. Это повлияет на tintColor только для UIBarButtonItems, в отличие от установки tintColor в окне и влияния на все подъязыки этого окна.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if([UINavigationBar conformsToProtocol:@protocol(UIAppearanceContainer)]) {
        [UINavigationBar appearance].tintColor = [UIColor whiteColor];
    }

    return YES;
}

Ответ 3

В Swift 3.0

let navigationBarAppearnce = UINavigationBar.appearance()

Навигационные панели tintColor влияет на цвет изображения обратного индикатора, заголовков кнопок и изображений кнопок.

navigationBarAppearnce.barTintColor = UIColor(red: 0.180, green: 0.459, blue: 0.733, alpha: 1.00)

Свойство barTintColor влияет на цвет самой панели

navigationBarAppearnce.tintColor = UIColor.white

Конечный код

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

 let navigationBarAppearnce = UINavigationBar.appearance()

 navigationBarAppearnce.barTintColor = UIColor(red: 0.180, green: 0.459, blue: 0.733, alpha: 1.00)

 navigationBarAppearnce.tintColor = UIColor.white

 navigationBarAppearnce.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]

 //Change status bar color
 UIApplication.shared.statusBarStyle = .lightContent

 return true
}

введите описание изображения здесь

Ответ 4

В iOS 8, если вы изменили цвет оттенка UIView для определенной цели, например, для брендинга UIAlertView, цвет оттенков для UIBarButtonItem в UIToolBar также изменился таким образом. Чтобы исправить это, просто напишите этот код

[UIView appearance].tintColor = SOME_COLOR;
[UIView appearanceWhenContainedIn:[UIToolbar class], nil].tintColor = BLACK_COLOR;

Для цвета оттенков UIBarButtonItem в UINavigationBar используется стандартный метод

[UINavigationBar appearance].tintColor = BLACK_COLOR;

Ответ 5

Чтобы изменить цвет определенного элемента (например, кнопки) в панели навигации: В Objective-C

myButton.tintColor = [UIColor redColor];

Ответ 6

UITabBar.appearance().tintColor = UIColor.yellowColor()

Ответ 7

Это сработало для меня

AddBarButtonItem.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.white], for: .normal)