Изменение цвета панели вкладок (Swift)

Я пытаюсь изменить цвет панели вкладок в контроллере представления в XCode с помощью swift. У меня есть шестнадцатеричный код, который соответствует значению RGB, и я пытаюсь установить его в этом коде. (Что не работает)

let color = UIColor(red: 41, green: 40, blue: 39, alpha: 1.0)
UITabBar.appearance().barTintColor = color

Однако этот код делает:

UITabBar.appearance().barTintColor = UIColor.whiteColor()

Может кто-нибудь объяснить, почему это не работает, и что я могу сделать, чтобы исправить это?

Ответ 1

Это не работает, потому что все ваши компоненты RGB больше 1, что является максимальным доступным значением для каждого канала. Вероятно, вы думаете о цветовых каналах как о байтах, но это не будет масштабироваться для изменения битовых глубин цвета. (Например, было распространено в RGB565, а не RGBA8888 в ранних версиях iOS. И вы, вероятно, можете ожидать, что Apple будет делать экраны с 16-битной точностью в норме в ближайшем будущем.) Используются поплавки от 0 до 1, чтобы развести глубину бит из цветового представления.

https://developer.apple.com/Library/ios/documentation/UIKit/Reference/UIColor_Class/index.html#//apple_ref/occ/instm/UIColor/initWithRed:green:blue:alpha:

Ответ 2

Чтобы использовать значения RGB, просто разделите их на 255.0. Это создаст значение с плавающей точкой от 0 до 1.

let color = UIColor(red: 41.0/255.0, green: 40.0/255.0, blue: 39.0/255.0, alpha: 1.0)

Ответ 3

iOS 10 Swift 3.0

Если вы не против использовать быстрые фреймворки, тогда UINeraida изменит фон Tabbar как UIColor или HexColor или UIImage и изменить полный цвет фона.

Для UITabBar

neraida.tabbar.background.color.uiColor(UIColor.orange, isTranslucent: false, viewController: self)

//change tab bar tint color //(select,unselect)

neraida.tabbar.foreground.color.uiColor((UIColor.white,UIColor.green), viewController: self)

//set Background Image for tab bar

neraida.tabbar.background.image("background", isTranslucent: false, viewController: self)