Je souhaite que les éléments de ma barre d'onglets soient en rose lorsqu'ils sont sélectionnés au lieu du bleu par défaut.
Comment puis-je accomplir cela en utilisant l'éditeur de storyboard dans Xcode 6?
Voici mes réglages actuels qui ne fonctionnent pas, le fond bleu fonctionne mais le rose ne fonctionne pas:
Ajoutez un attribut de couleur d'exécution nommé "tintColor" dans StoryBoard. Cela fonctionne (pour Xcode 8 et supérieur).
si vous voulez une couleur non sélectionnée, vous pouvez aussi ajouter unselectedItemTintColor
.
Cette solution élégante fonctionne très bien sur Swift 3.0 et Swift 4.0 :
Sur le storyboard:
Edit: Testé avec Xcode 8, pour iOS 10 et supérieur.
Dans Swift, en utilisant xcode 7 (et versions ultérieures), vous pouvez ajouter les éléments suivants à votre fichier AppDelegate.Swift:
UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)
Voici à quoi ressemble la méthode complète:
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
}
Dans l'exemple ci-dessus, mon article sera blanc. Le "/255.0" est nécessaire car il attend une valeur de 0 à 1. Pour le blanc, j'aurais pu en utiliser 1. Mais pour les autres couleurs, vous utiliserez probablement des valeurs RVB.
Swift 3 | Xcode 10
Si vous voulez rendre tous les éléments de la barre d'onglets de la même couleur (sélectionnés et non sélectionnés) ...
Étape 1
Assurez-vous que vos ressources d’image sont configurées pour Render As = Image de modèle. Cela leur permet d'hériter de la couleur.
Étape 2
Utilisez l'éditeur de storyboard pour modifier les paramètres de la barre d'onglets comme suit:
Étape 3
Les étapes 1 et 2 changeront la couleur de l'icône sélectionnée. Si vous souhaitez toujours modifier la couleur des éléments non sélectionnés, vous devez le faire dans le code. Je n'ai pas trouvé le moyen de le faire via l'éditeur de storyboard.
Créez une classe de contrôleur de barre d'onglets personnalisée ...
// TabBarController.Swift
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
// make unselected icons white
self.tabBar.unselectedItemTintColor = UIColor.white
}
}
... et assignez la classe personnalisée à votre contrôleur de scène de la barre d'onglets.
Si vous trouvez comment changer la couleur de l'icône non sélectionnée via l'éditeur de storyboard, veuillez me le faire savoir. Merci!
placez ce code dans le viewDidLoad du contrôleur de vue dont vous voulez changer la couleur
[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];
XCode 8.2, iOS 10, Swift 3: il existe maintenant un attribut unselectedItemTintColor
pour tabBar
:
self.tabBar.unselectedItemTintColor = UIColor(red: 0/255.0, green: 200/255.0, blue: 0/255.0, alpha: 1.0)
Vous pouvez changer les couleurs UITabBarItem par storyboard, mais si vous voulez changer les couleurs par code, c'est très simple:
// Utiliser ceci pour changer la couleur de la barre sélectionnée
[[UITabBar appearance] setTintColor:[UIColor blueColor]];
// Ceci pour changer la barre non sélectionnée (iOS 10)
[[UITabBar appearance] setUnselectedItemTintColor:[UIColor yellowColor]];
// Et cette ligne pour changer la couleur de tous les onglets
[[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];
Ajoutez ce code dans votre fonction délégué -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) )
mettre le RVB de la couleur requise
D'une manière ou d'une autre, nous ne sommes pas en mesure de modifier l'élément sélectionné de la barre d'onglets, Teinte, à l'aide du storyboard seul. C'est pourquoi j'ai ajouté le code ci-dessous dans ViewDidLoad. J'espère que cela vous aidera.
[[UITabBar appearance] setTintColor:[UIColor whiteColor]];
Voici la solution dans Swift 3 qui fonctionne dans iOS 10:
Tout d’abord, vous créez votre propre sous-classe de contrôleur de barre d’onglet et vous l’ajoutez à votre contrôleur d’onglet dans votre storyboard. Dans la méthode viewDidLoad()
, vous pouvez ensuite personnaliser la barre d'onglets. Il convient de préciser ici que l'attribut tintColor
de tabBar
représente la couleur de l'élément sélectionné et non la couleur de l'élément non sélectionné! Afin de changer la couleur des éléments non sélectionnés, il est recommandé de parcourir chaque élément en boucle et d'utiliser les couleurs d'origine de vos images, afin qu'elles ne soient pas automatiquement rendues en gris.
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 )
}
}
}
}
}
Le seul inconvénient de cette approche est que les images de vos articles doivent déjà avoir la couleur souhaitée.
Ce meilleur moyen est de changer Image Tint
dans le storyboard
Vous pouvez sous-classer la UITabBarController
et la remplacer par celle-ci dans le storyboard. Dans votre viewDidLoad
implémentation de la sous-classe, appelez ceci:
[self.tabBar setTintColor:[UIColor greenColor]];