web-dev-qa-db-fra.com

Changer la couleur de la barre d'onglets (Swift)

J'essaie de changer la couleur de la barre de tabulation dans un contrôleur de vue dans XCode à l'aide de Swift. J'ai un hexagone que j'ai mis en correspondance avec une valeur RVB et j'essaye de le définir dans ce code. (Qui ne fonctionne pas)

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

Cependant ce code fait:

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

Quelqu'un peut-il expliquer pourquoi cela ne fonctionne pas et ce que je peux faire pour y remédier?

15
Jordan

Cela ne fonctionne pas car tous vos composants RVB sont supérieurs à 1, ce qui correspond à la valeur maximale disponible par canal. Vous pensez probablement que les canaux de couleur sont des octets, mais cela ne s’adapterait pas à différentes profondeurs de bits de couleur. (Par exemple, il était courant de rendre le rendu en RGB565, et non en RGBA8888 dans les premières versions d'iOS. Et vous pouvez probablement vous attendre à ce que Apple fasse de la norme des écrans avec une précision de 16 bits, dans un avenir proche.) Les flotteurs de 0 à 1 sont utilisés , pour séparer la profondeur de bits de la représentation des couleurs.

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

5
Jessy

Pour utiliser les valeurs RVB, il suffit de les diviser par 255.0. Cela produira une valeur flottante comprise entre 0 et 1.

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

iOS 10 Swift 3.0

Si cela ne vous dérange pas d’utiliser les frameworks Swift, utilisez UINeraida pour modifier l’arrière-plan de la barre de tabulation comme suit: UIColor ou HexColor ou UIImage et pour modifier la couleur de fond complète.

Pour 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)
0
user7304558