2017-03-05 2 views
0

J'ai besoin d'un moyen d'avoir des icônes de barre d'onglets multicolores, mais pour une raison quelconque, iOS continue à dessiner l'icône de façon monochrome.Définir l'icône de la barre d'onglets multicolore au lieu de l'icône monochrome

J'ai essayé diverses méthodes telles que l'inclusion de cette ligne de code: tabBarItem.image = #imageLiteral(resourceName:"routineIcon").withRenderingMode(.alwaysOriginal) dans le viewDidLoad de mon premier contrôleur de vue mais je n'ai eu aucune chance.

Est-il possible de conserver les informations de couleur dans une icône de la barre d'onglets sans la rendre monochrome? Il semble mille fois mieux quand il est multicolore.

Merci,

Harish

Répondre

1

Vous devez créer un nouveau UITabBarItem et l'affecter à la propriété tabBarItem de votre contrôleur de vue.

// In viewDidLoad() 
self.tabBarItem = UITabBarItem(title: "Hello world!", image: #imageLiteral(resourceName: "routineIcon").withRenderingMode(.alwaysOriginal), tag: 0) 

De plus, si vous utilisez un catalogue d'actifs (que vous devriez), notez que dans vos paramètres d'actifs que vous avez un Render Comme paramètre que vous pouvez définir à Toujours original. Vous pouvez alors ignorer le .withRenderingMode(.alwaysOriginal) lorsque vous utilisez votre image.

// In viewDidLoad() 
self.tabBarItem = UITabBarItem(title: "Hello world!", image: #imageLiteral(resourceName: "routineIcon"), tag: 0) 

Il y a aussi un initialiseur qui prend une image sélectionnée si vous avez un

// In viewDidLoad() 
self.tabBarItem = UITabBarItem(title: "Hello world!", image: #imageLiteral(resourceName: "routineIcon"), selectedImage: #imageLiteral(resourceName: "routineIconSelected")) 

Note: En règle générale, le système de modification UIBarItem objets (UITabBarItem pour les barres d'onglets et UIBarButtonItem pour barres de navigation ou barres d'outils) souvent ne fonctionne pas et vous devez en créer un nouveau.
Les éléments de barre système sont ceux créés avec init(tabBarSystemItem:tag:) (pour UITabBarItem) ou init(barButtonSystemItem:target:action:) (pour UIBarButtonItem).
Lorsque vous utilisez un storyboard, vous pouvez décider d'utiliser un élément de la barre système ou un élément personnalisé.

+0

Cela a fonctionné! Merci beaucoup! J'espère que la ligne de code ci-dessus fonctionnera finalement, car il serait cool de modifier certaines choses comme ça au lieu de créer un tout nouveau code – Harish