web-dev-qa-db-fra.com

Swift 2.2 Comment changer la couleur de fond du contrôleur de barre d'onglets

J'ai essayé de changer l'arrière-plan de la barre d'onglets et j'ai lu de nombreux articles dans ObjC, dont beaucoup sont assez anciens. Mais je n’en ai trouvé aucun pour Swift, c’est ce que j’utilise.

J'ai finalement compris comment utiliser le code pour que les couleurs de la barre d'onglets puissent être changées à chaque changement de couleur de thème. Voici les références que j'ai utilisées:

  override func viewWillAppear(animated: Bool) {
    // set tab bar background color, including the More tab
    self.tabBarController?.tabBar.backgroundColor = UIColor.blueColor()
  }

J'ai mis ce code dans le contrôleur de vue pour le premier onglet qui apparaît au démarrage de l'application, de sorte qu'il s'exécute "en premier". Cela fonctionne bien pour autant que je sache, même lorsque j'ai 8 onglets et que j'utilise l'onglet Plus ....

Et j'ai lié le même code à des boutons dans différents onglets afin de pouvoir changer la couleur de la barre d'onglets à partir de n'importe où dans mon code.

Mais j'avoue qu'en tant que débutant, je ne suis pas sûr que ce soit le meilleur endroit pour changer la couleur de la barre d'onglets. Si c'est le mauvais endroit, corrigez-moi s'il vous plaît.

Je poste ce code ici car cela m'aurait épargné quelques heures et j'espère que cela permettra à quelqu'un de gagner du temps (Swift).

8
Kevin

C'est un bon moyen de changer la couleur d'une UITabBar. Si vous souhaitez éviter de définir la couleur dans chaque viewController intégré à votre UITabBarController, vous pouvez également créer une sous-classe de UITabBarController et la définir à cet endroit. Ainsi, quelle que soit la page affichée en premier, la couleur sera définie.

Pour créer une sous-classe de UITabBarController, allez simplement dans fichier> nouveau> fichier> classe de cacao tactile ... puis configurez votre fichier comme sur cette photo

 Add File

Maintenant, dans votre storyboard, définissez la classe personnalisée sur votre tabBarController

 Storyboard

Enfin, dans votre fichier, vous avez créé MyTabBarController (ou comment vous l'avez appelé):

class MyTabBarController: UITabBarController {

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    self.tabBar.barTintColor = .blueColor()
}
...
19
Jeff Lewis

Xcode 9

Storyboard

Il est possible de définir la couleur de fond directement dans le contrôleur de vue (actuellement dans TabBarViewController). Pour cela, vous devez définir Chemin de clé . Ne pas oublier de remove couleur de fond on nested view, sinon la couleur d'arrière-plan de Superview sera superposée.

 enter image description here

1
dimpiax