Змінити вибраний колір рядка вкладки на дошці повідомлень


175

Я хочу змінити елементи панелі вкладок на рожеві, якщо вибрано замість синього за замовчуванням.

Як я можу це досягти за допомогою редактора розкадрівки в Xcode 6?

Ось мої поточні налаштування, які не працюють, синій фон працює, але рожевий не працює:

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



Перевірте цю відповідь, вона допоможе вам знайти: stackoverflow.com/a/58727092/7804300
Talha Ahmed

Відповіді:


408

Додайте атрибут кольору виконання під назвою "tintColor" від StoryBoard. Це працює ( для Xcode 8 і вище ).

якщо ви хочете невибраний колір .. ви можете додати unselectedItemTintColorтакож.

встановлення tintColor як атрибут часу виконання


24
він працював для мене, коли я додав цю властивість до UITabBarItem, а не UITabBar.
Sourabh86

1
Але як встановити елемент панелі вкладок Невибраний колір у дошці повідомлень?
Петро

1
Підходить для мого випадку - мені потрібно, щоб мої п’ять елементів tabBar були унікальними кольорами, коли вони були вибрані. Мені вдалося встановити цей атрибут виконання на UITabBarItem, UINavigationControllerпідключеному до мого вкладку, і він працює бездоганно. Все, без того, щоб писати будь-який код, що чудово, оскільки я тричі використовую VC клас. Дякую!
rosshump

7
навпаки - це єдиний підхід, який працює на iOS 10 (відтінок на панелі атрибутів, здається, не працює, а атрибут виконання «tintColor» uitabbaritem теж не працює.
luky

5
StackOverflow 1: Apple 0
Шарух Мастан

175

Це елегантне рішення чудово працює на SWIFT 3.0 , SWIFT 4.2 та SWIFT 5.1 :

На дошці розкадрувань:

  1. Виберіть панель вкладок
  2. Встановіть Attibute Runtime Attibute під назвою tintColor для потрібного кольору вибраного значка на панелі вкладок
  3. Встановіть час виконання атрибути оголошення називається unselectedItemTintColor для бажаного кольору Unselected ікони на панелі вкладок

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

Редагування: робота з Xcode 8/10, для iOS 10/12 та вище .


6
Дуже дякую.
unselectedItemTintColor

4
Ідеальне рішення для мене "unselectedItemTintColor" дякую.
fozoglu

Чи спрацює це, якщо ціль розгортання становить 8,0 або 9,0? Я використовував для розробки swift 3.0 та Xcode 8.0
Mamta

2
Важливо вибрати панель Tab, бо дійсно працював у Swift 4 для мене.
Мінуси Булакена

2
Відмінно! Все ще працює над xCode 10 :) не оновлює візуальний редактор, але працює колись складено :)
Михайло Міньков

64

У 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.


3
Здається, жоден інший метод не працює (більше.) Це працює!
плюшевий

@Jarrod Я з цим дурив майже 1 годину, ця відповідь повинна мати більше голосів. Дякую!
Lance Samaria

53

Про те, що Xcode8я змінив ImageTintіз аркуша розкадровки, і він працює добре.

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

Результат:

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


1
Під час користувальницьких зображень ЦЕ ТИ, що працювало для мене
Хуанхо

1
Це має бути прийнятою відповіддю. Для цього не потрібен атрибут виконання, що означає, що це працює на екранах запуску!
Кріс Дуглас

18

Швидкий 3 | Xcode 10

Якщо ви хочете, щоб усі елементи рядка вкладки були однаковими (вибрані та невибрані) ...


Крок 1

Переконайтеся, що для активів зображення встановлено зображення " Візуалізувати як = шаблон зображення" . Це дозволяє їм успадкувати колір.

Xcode Assets


Крок 2

Скористайтеся редактором раскадрівки, щоб змінити налаштування панелі вкладок так:

  • Встановіть панель вкладок: Відтінок зображення до кольору, який потрібно успадковувати вибраному значку.
  • Встановіть панель вкладок: відтінок смужки кольору, який ви бажаєте надати вкладці.
  • Встановити перегляд: Відтінок кольору, який ви хочете побачити в редакторі раскадрівки, це не впливає на колір значка при запуску програми.

Редактор розгортки Xcode


Крок 3

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

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

//  TabBarController.swift

class TabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

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

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

Редактор розгортки Xcode


Якщо ви з'ясували, як змінити невідомий колір піктограми за допомогою редактора розкадрівки, будь ласка, дайте мені знати. Дякую!


self.tabBar.unselectedItemTintColor = UIColor.white self.tabBar.tintColor = #colorLiteral(red: 0.2, green: 0.7333333333, blue: 0.3450980392, alpha: 1) Робота для мене
Вахаб Хан Джадон

9

помістіть цей код у viewDidLoad контролера перегляду, для якого потрібно змінити колір

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

1
Чи немає можливості змінити всі вкладки?
Дікор

Просто введіть код того ж кольору у вигляд, ви завантажили всі ваші вкладки
Nick

Ви можете використовувати цей код відразу після створення UITabController, він встановить колір, який ви згадали для всіх елементів вкладки при виборі.
Джерін

Немає такого методу набірSelectedImageTintColor
Мадху Авінаш

8

Ви також можете встановити вибраний колір відтінку смужки зображення за ключовим шляхом:

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

Сподіваюся, це допоможе вам !! Дякую


в iOS 9 він не змінює невибраний колір
Saeed Rahmatolahi

Як це допоможе змінити колір піктограми UITabBar?
Мадху Авінаш

7

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)

6

Ви можете змінити кольори UITabBarItem за допомогою розкадрівки, але якщо ви хочете змінити кольори за кодом, це дуже просто:

// Використовуйте це для зміни кольору вибраної смуги

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

// Це для зміни невибраного рядка (iOS 10)

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

// І цей рядок для зміни кольору всіх вкладок

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

setUnselectedItemTintColor призначений лише для iOS 10
ondermerol

5

Так чи інакше ми не в змозі змінити вибраний елемент відтінку кольору на панелі вкладок, використовуючи лише розкадровку, отже, я додав код нижче у свій ViewDidLoad, сподіваюся, це допоможе.

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

5

Додайте цей код у функцію делегата програми -did_finish_launching_with_options

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

покладіть RGB потрібного кольору


4

Це рішення 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 )
                }
            }
        }
    }
}

Єдиний недолік цього підходу полягає в тому, що зображення предметів вже повинні мати бажаний колір, на який ви прагнете.


Складні. Відповідь Джаррода добре працює з усіма іконами.
Жозе Рамірес


2

Ви можете підкласифікувати UITabBarControllerта замінити той, який знаходиться на ньому. У своїй viewDidLoadреалізації підкласу заклик цього:

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

отримання:'UITabBar' does not have a member named 'setSelectedImageTintColor'
Дікор

Крім того, я використовую швидкий, тому я поставив: self.tabBar.setSelectedImageTintColor = UIColor.greenColorне впевнений, це правильно чи ні
Deekor

2
@Deekor це tintColorне так selectedImageTintColor, btw selectedImageTintColorзастаріло в iOS 8.
chancyWu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.