2014-07-10 12 views
7

Ho impostato un tintColor globale e posso vederlo nel builder dell'interfaccia, quando seleziono UITabBar e UITabBarController, ancora quando eseguo l'applicazione, la tonalità dell'UITabBarItem selezionata è iOS default (blu), e non quello che ho impostato. Cosa mi manca?UITabBar tintColor non è stato modificato storyboard

P.S. UITabBarController è spinto a navigationController, non è il RootViewController

risposta

10

Utilizzare questo codice in didFinishLaunchingWithOptions: metodo della vostra appDelegate

[[UITabBar appearance] setSelectedImageTintColor: [UIColor redColor]]; 

Sostituire colore rosso con colore che si desidera.

+0

funziona alla grande! Grazie. – Dean

+0

Piacere mio, @Dean! –

+1

in iOS setSelectedImageTintColor deprecato, dovrebbe essere usato tintColor.Versione Swift: UITabBar.appearance(). TintColor = UIColor.red – Jurasic

4

Se si prendono di mira iOS 8 poi

selectedImageTintColor è deprecato in iOS 8 uso tintColor

Swift

UITabBar.appearance().tintColor = UIColor.redColor() 

Objective C

[[UITabBar appearance] setTintColor: [UIColor redColor]]; 
+0

Ho inserito lo stesso codice in AppDelegate ma non funziona sebbene unselectedItemTintColor funzioni correttamente – nikhil84

12

Storyboard non supporta ancora direttamente. Ma è possibile impostare un attributo di runtime definito dall'utente nello storyboard.

Selezionare la barra delle schede del controller della barra delle linguette. Select the tab bar of the tab bar controller.

Selezionare l'ispettore di identità. (Il punto di vista in cui è possibile impostare la classe di una vista.)

Select the identity inspector

E se si vuole cambiamento della voce selezionata tinta di colore invece, basta usare il tasto PATH selectedImageTintColor invece.

+0

È una buona soluzione ma non sono sicuro del motivo per cui non funziona su iOS 10. La soluzione di codice di Scott funziona bene –

+0

Soluzione di Scott funziona ma ha un altro problema che cambia tintColor di tabbar (tutti gli elementi in Tabbar) non una scheda! –

+0

Questo è il vero vincitore. Basta unire ciò che conosciamo da entrambe le risposte: imposta il percorso chiave come "selectedImageTintColor" invece di "tintColor" e voilà -> nessun codice richiesto. – winfred

0

Nella mia applicazione, volevo che ogni ViewController avesse un colore TabBarItem univoco quando presentato.

enter image description here

In iOS 8, l'aggiunta manuale di un attributo tintColor nella storyboard funzionava bene, ma non ha alcun effetto sotto iOS 9/Xcode 8.

ho risolto il problema inserendo la codice seguente in ciascuno dei bambini ViewControllers del mio TabBarController, che sovrascrivono ciascuna delle loro funzioni ViewDidAppear().

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    self.tabBarController?.tabBar.tintColor = UIColor.whateverColor 
    //The rest of your code 
} 

Questo è sicuro in qualsiasi ViewController, a causa del? dopo la chiamata tabBarController. Se ViewController non è incorporato in un TabBarController, l'intera riga viene semplicemente ignorata.

Inserendo questo codice in ciascuno dei VC, è possibile specificare facilmente il colore di ogni TabBarItem.

Problemi correlati