Ответ 1
Добавьте атрибут времени выполнения с именем tintColor из StoryBoard. Это работает (для Xcode 8 и выше).
если вы хотите невыбранный цвет... вы также можете добавить unselectedItemTintColor
.
Я хочу изменить элементы панели вкладок, чтобы они были розовыми, если они выбраны вместо синего по умолчанию.
Как я могу выполнить это с помощью редактора раскадровки в Xcode 6?
Вот мои текущие настройки, которые не работают, синий фон работает, но розовый не работает:
Добавьте атрибут времени выполнения с именем tintColor из StoryBoard. Это работает (для Xcode 8 и выше).
если вы хотите невыбранный цвет... вы также можете добавить unselectedItemTintColor
.
Это элегантное решение прекрасно работает на SWIFT 3.0, SWIFT 4.2 и SWIFT 5.1:
На раскадровке:
Изменение: Работа с Xcode 8, для iOS 10 и выше.
В 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.
В Xcode8
Я изменил ImageTint
из раскадровки, и он работает хорошо.
Результат:
Свифт 3 | Xcode 10
Если вы хотите, чтобы все элементы панели вкладок были одинакового цвета (выделено и не выбрано)...
Шаг 1
Убедитесь, что ваши графические ресурсы настроены на Render As = Template Image. Это позволяет им наследовать цвет.
Шаг 2
Используйте редактор раскадровки, чтобы изменить настройки панели вкладок следующим образом:
Шаг 3
Шаги 1 и 2 изменит цвет для выбранного значка. Если вы все еще хотите изменить цвет невыбранных элементов, вам нужно сделать это в коде. Я не нашел способа сделать это через редактор раскадровки.
Создать пользовательский класс контроллера панели вкладок...
// TabBarController.swift
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
// make unselected icons white
self.tabBar.unselectedItemTintColor = UIColor.white
}
}
... и назначьте пользовательский класс контроллеру сцены панели вкладок.
Если вы выясните, как изменить невыбранный цвет значка с помощью редактора раскадровки, пожалуйста, дайте мне знать. Спасибо!
поместите этот код в viewDidLoad контроллера вида, который вы хотите изменить цвет
[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];
Вы также можете установить цвет оттенка выбранного цвета изображения по пути:
Надеюсь, это поможет вам! Благодаря
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)
Вы можете изменять цвета UITabBarItem раскадрой, но если вы хотите изменить цвета по коду, это очень просто:
//Используйте это для изменения цвета выбранной панели
[[UITabBar appearance] setTintColor:[UIColor blueColor]];
//Это для изменения невыделенной строки (iOS 10)
[[UITabBar appearance] setUnselectedItemTintColor:[UIColor yellowColor]];
//И эта строка для изменения цвета всех вкладок
[[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];
Каким-то образом мы не можем изменить выбранный элемент панели вкладок Tint color, используя только раскадровку, поэтому я добавил код ниже в моем ViewDidLoad, надеюсь, что это поможет.
[[UITabBar appearance] setTintColor:[UIColor whiteColor]];
Добавьте этот код в свой делегат приложения -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 требуемого цвета
Это решение в 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 )
}
}
}
}
}
Единственным недостатком этого подхода является то, что у ваших изображений предметов уже есть желаемый цвет, на который вы нацелились.
Это лучший способ изменить Image Tint
в раскадровке
Вы можете подклассифицировать UITabBarController
и заменить его на раскадровку.
В вашей реализации подкласса viewDidLoad
выполните следующие действия:
[self.tabBar setTintColor:[UIColor greenColor]];