2014-07-10 7 views
7

Ich habe eine globale TintColor festgelegt, und ich kann es im Interface Builder sehen, wenn ich UITabBar sowie UITabBarController auswähle. Wenn ich die Anwendung ausführe, ist der Farbton des ausgewählten UITabBarItem iOS Standard (blau), und nicht was ich eingestellt habe. Was vermisse ich?UITabBar tintColor Storyboard wurde nicht geändert

P.S. UITabBarController zu Navigation gedrückt wird, ist es nicht die RootViewController

Antwort

10

Verwenden Sie diesen Code in didFinishLaunchingWithOptions: Methode Ihrer appDelegate

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

rote Farbe ersetzen mit Farbe, die Sie möchten.

+0

funktioniert gut! Vielen Dank. – Dean

+0

Mein Vergnügen, @Dean! –

+1

in iOS setSelectedImageTintColor veraltet, tintColor sollte stattdessen verwendet werden.Swift-Version. UITabBar.appearance() tintColor = UIColor.red – Jurasic

4

Wenn Sie Targeting iOS 8 dann

selectedImageTintColor in iOS 8 Verwendung tintColor

Swift

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

Objective c

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

habe ich den gleichen Code in AppDelegate aber nicht funktioniert, obwohl unselectedItemTintColor ist fein – nikhil84

12
veraltet

Storyboard unterstützt das noch nicht direkt. Sie können jedoch ein benutzerdefiniertes Laufzeitattribut im Storyboard festlegen.

Wählen Sie die Registerkartenleiste des Registerkartencontrollers. Select the tab bar of the tab bar controller.

Wählen Sie den Identitätsprüfer aus. (Die Ansicht, in der Sie die Klasse einer Ansicht festlegen.)

Select the identity inspector

Und wenn Sie das ausgewählte Element der Tönungsfarbe stattdessen ändern möchten, verwenden Sie einfach den selectedImageTintColor Key Path statt.

+0

Arbeits Es ist gute Lösung, aber ich bin nicht sicher, warum es nicht auf iOS-10 funktioniert. Die Code-Lösung von Scott funktioniert gut –

+0

Lösung von Scott arbeiten, aber es hat ein anderes Problem, das es ändert tintColor der Registerkarte (alle Elemente auf der Registerkarte) nicht ein Tab! –

+0

Dies ist der wahre Gewinner. Kombinieren Sie einfach das, was wir aus beiden Antworten wissen: Setzen Sie den Schlüsselpfad als 'selectedImageTintColor' anstelle von 'tintColor' und voila -> kein Code erforderlich. – winfred

0

In meiner Anwendung wollte ich, dass jeder ViewController eine eindeutige TabBarItem-Farbe hat, wenn er angezeigt wird.

enter image description here

In iOS 8, die manuelle Zugabe eines tintColor Attributs im Storyboard funktionierte gut, aber nicht mehr eine Wirkung unter iOS 9/Xcode 8.

ich das Problem gelöst, indem die folgenden Code in jedem meiner TabBarController Kinder ViewControllers, überschreiben jede ihrer ViewDidAppear() -Funktionen.

Dies ist sicher in jedem ViewController, wegen der? nach dem Aufruf von tabBarController. Wenn der ViewController nicht in einen TabBarController eingebettet ist, wird die gesamte Zeile einfach ignoriert.

Durch die Platzierung dieses Codes in jeder Ihrer VCs können Sie die Farbe jedes TabBarItems leicht angeben.