Изменить элемент панели вкладок выбранного цвета в раскадровке

Я хочу изменить элементы панели вкладок, чтобы они были розовыми, если они выбраны вместо синего по умолчанию.

Как я могу выполнить это с помощью редактора раскадровки в Xcode 6?

Вот мои текущие настройки, которые не работают, синий фон работает, но розовый не работает:

enter image description here

Ответ 1

Добавьте атрибут времени выполнения с именем tintColor из StoryBoard. Это работает (для Xcode 8 и выше).

если вы хотите невыбранный цвет... вы также можете добавить unselectedItemTintColor.

setting tintColor as Runtime Attribute

Ответ 2

Это элегантное решение прекрасно работает на SWIFT 3.0, SWIFT 4.2 и SWIFT 5.1:

На раскадровке:

  1. Выберите панель вкладок
  2. Установите атрибут времени выполнения с именем tintColor для нужного цвета выбранного значка на панели вкладок
  3. Установите атрибут времени выполнения с именем unselectedItemTintColor для нужного цвета значка не выбранных на панели вкладок

enter image description here

Изменение: Работа с Xcode 8, для iOS 10 и выше.

Ответ 3

В Swift, используя xcode 7 (и позже), вы можете добавить в свой файл AppDelegate.swift следующее:

UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)

Вот как выглядит полный метод:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    // I added this line
    UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)

    return true
}

В приведенном выше примере мой элемент будет белым. "/255.0" необходим, потому что он ожидает значения от 0 до 1. Для белого я мог бы просто использовать 1. Но для другого цвета вы, вероятно, будете использовать значения RGB.

Ответ 4

В Xcode8 Я изменил ImageTint из раскадровки, и он работает хорошо.

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

Результат:

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

Ответ 5

Свифт 3 | Xcode 10

Если вы хотите, чтобы все элементы панели вкладок были одинакового цвета (выделено и не выбрано)...


Шаг 1

Убедитесь, что ваши графические ресурсы настроены на Render As = Template Image. Это позволяет им наследовать цвет.

Xcode Assets


Шаг 2

Используйте редактор раскадровки, чтобы изменить настройки панели вкладок следующим образом:

  • Задайте для панели вкладок "Оттенок изображения" тот цвет, который требуется отобранному значку.
  • Установите для панели вкладок "Оттенок панели" нужный цвет панели вкладок.
  • Установите "Вид": выберите цвет, который вы хотите видеть в редакторе раскадровки, это не влияет на цвет значка при запуске приложения.

Xcode Storyboard Editor


Шаг 3

Шаги 1 и 2 изменит цвет для выбранного значка. Если вы все еще хотите изменить цвет невыбранных элементов, вам нужно сделать это в коде. Я не нашел способа сделать это через редактор раскадровки.

Создать пользовательский класс контроллера панели вкладок...

//  TabBarController.swift

class TabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // make unselected icons white
        self.tabBar.unselectedItemTintColor = UIColor.white
    }
}

... и назначьте пользовательский класс контроллеру сцены панели вкладок.

Xcode Storyboard Editor


Если вы выясните, как изменить невыбранный цвет значка с помощью редактора раскадровки, пожалуйста, дайте мне знать. Спасибо!

Ответ 6

поместите этот код в viewDidLoad контроллера вида, который вы хотите изменить цвет

[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];

Ответ 7

Вы также можете установить цвет оттенка выбранного цвета изображения по пути:

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

Надеюсь, это поможет вам! Благодаря

Ответ 8

XCode 8.2, iOS 10, Swift 3: теперь существует атрибут unselectedItemTintColor для tabBar:

self.tabBar.unselectedItemTintColor = UIColor(red: 0/255.0, green: 200/255.0, blue: 0/255.0, alpha: 1.0)

Ответ 9

Вы можете изменять цвета UITabBarItem раскадрой, но если вы хотите изменить цвета по коду, это очень просто:

//Используйте это для изменения цвета выбранной панели

   [[UITabBar appearance] setTintColor:[UIColor blueColor]];

//Это для изменения невыделенной строки (iOS 10)

   [[UITabBar appearance] setUnselectedItemTintColor:[UIColor yellowColor]];

//И эта строка для изменения цвета всех вкладок

   [[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];

Ответ 10

Каким-то образом мы не можем изменить выбранный элемент панели вкладок Tint color, используя только раскадровку, поэтому я добавил код ниже в моем ViewDidLoad, надеюсь, что это поможет.

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

Ответ 11

Добавьте этот код в свой делегат приложения -did_finish_launching_with_options function

UITabBar.appearance().tintColor = UIColor( red: CGFloat(255/255.0), green: CGFloat(99/255.0), blue: CGFloat(95/255.0), alpha: CGFloat(1.0) )

установите RGB требуемого цвета

Ответ 12

Это решение в Swift 3, которое работает в iOS 10:

Во-первых, вы создаете свой собственный подкласс контроллера панели вкладок и добавляете его в свой контроллер табуляции в своем раскадровке. В методе viewDidLoad() вы можете настроить панель вкладок. Здесь следует указать, что атрибут tintColor tabBar представляет цвет выбранного элемента, а не цвет невыделенных! Чтобы изменить цвет невыделенных элементов, я рекомендую прокручивать каждый элемент и использовать исходные цвета ваших изображений, чтобы они не отображались как серые автоматически.

class CustomTabBarVC: UITabBarController
{
    override func viewDidLoad()
    {
        super.viewDidLoad()

        self.tabBar.tintColor = AppColor.normalRed
        self.tabBar.barTintColor = .white
        self.tabBar.isTranslucent = true

        if let items = self.tabBar.items
        {
            for item in items
            {
                if let image = item.image
                {
                    item.image = image.withRenderingMode( .alwaysOriginal )
                }
            }
        }
    }
}

Единственным недостатком этого подхода является то, что у ваших изображений предметов уже есть желаемый цвет, на который вы нацелились.

Ответ 13

Это лучший способ изменить Image Tint в раскадровке

Ответ 14

Вы можете подклассифицировать UITabBarController и заменить его на раскадровку. В вашей реализации подкласса viewDidLoad выполните следующие действия:

[self.tabBar setTintColor:[UIColor greenColor]];