2014-10-24 9 views
17

Wie kann ich die TintColor eines nicht ausgewählten UITabBarItem Titel und Hintergrundbild iOS 8 ändern?Change tintColor des nicht ausgewählten UITabBarController Element Titel und Hintergrundbild

Die Standardfarbe für einen nicht ausgewählten Zustand ist eine hellgraue Farbe, aber es auf meinem dunklen Schatten UITabBar Hintergrund zeigt nicht

ich nicht ausgewählten Zustand möchte eine Farbe von [UIColor black]

haben

Inside my AppDelegate didFinishLaunchingWithOptions: ich

haben
UIImage *deselectedE = [[UIImage imageNamed:@"mincraft_axe_green_32.png"] imageWithRenderingMode:UIImageRenderingModeAutomatic]; 
UIImage *selectedE = [[UIImage imageNamed:@"mincraft_axe_green_32.png"] imageWithRenderingMode:UIImageRenderingModeAutomatic]; 
e.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Profile" image:deselectedE selectedImage:selectedE]; 
[[UITabBar appearance] setTintColor:[UIColor blackColor]]; 
+3

in iOS 10+ und SWiF t 3 Sie können 'tabBarCtrl.tabBar.unselectedItemTintColor = UIColor.gray' – Anchor

+0

http://stackoverflow.com/a/40741444/1652402 –

Antwort

45

Ich habe es herausgefunden!

Hier können Sie die Farbe des Textes ändern:

[[UITabBarItem appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor greenColor] } 
             forState:UIControlStateNormal]; 
[[UITabBarItem appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor blackColor] } 
             forState:UIControlStateSelected]; 

Und stellen Sie sicher, dass die Bildwiedergabemodus ORIGINAL für die Bilder gesetzt ist

UIImage *deselectedImage = [[UIImage imageNamed:@"deselectedImage"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
UIImage *selectedImage = [[UIImage imageNamed:@"selectedImage"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
+5

Originalbilder sind eine nette Sache. Danke für das Teilen. – VaporwareWolf

+4

Was ist, wenn mein ursprüngliches Symbol schwarz ist, aber ich möchte, dass es weiß ist? –

+1

Ich hatte eine ähnliche Situation wo, aber ich wollte mein nicht ausgewähltes Bild weiß (Originalbild ist weiß) und mein ausgewähltes Bild gelb (derzeit grau).Ich bin mir sicher, dass seine obige Lösung funktioniert, wenn ich die Farbe meines ausgewählten Bildes ändern wollte, aber ich wollte die integrierte Eigenschaft "Tönungsfarbe" für das ausgewählte Bild verwenden. Als ich versucht habe, mein ausgewähltes Bild im Attribut-Inspektor unter Tab-Leiste zu platzieren, wurde das Bild zur Laufzeit leer gelassen (Bug). Ich habe diese Lösung in meinem App-Delegierten verwendet: [link] (http://stackoverflow.com/questions/26515703/set-tab-bar-item-selected-image-in-xcode-6) –

22

In Ihrem AppDelegate.m innerhalb von application didFinishLaunchingWithOptions: den folgenden Code verwenden:

//unselected icon tint color 
[[UIView appearanceWhenContainedIn:[UITabBar class], nil] setTintColor:[UIColor redColor]]; 

//selected tint color 
[[UITabBar appearance] setTintColor:[UIColor greenColor]]; 

//text tint color 
[[UITabBarItem appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor whiteColor] } 
            forState:UIControlStateNormal]; 

//background tint color 
[[UITabBar appearance] setBarTintColor:[UIColor blueColor]]; 
+11

Ändern der nicht ausgewählten Farbton Farbe ändert sich zurück, nachdem das Element ausgewählt wurde dann nicht ausgewählt. Es scheint, dass die einzige Möglichkeit, den nicht ausgewählten Zustand zu der gewünschten Farbe zu bringen, darin besteht, ein eigenes Bild zu verwenden. Sie können sehen, wie man das hier macht: http://stackoverflow.com/a/19662170/4114683 – TheSD

+0

Ich habe versucht und herausgefunden, dass Sie auch '[[UIButton Aussehen] setTintColor: [UIColor greenColor]];' zu behalten Konsistenz zwischen ausgewählten Tab-Leiste-Elementen und Schaltflächenbeschriftungen in iOS 7/8 (z. B. wie die Musik-App) –

+0

Arbeiten wie ein Charme. Vielen Dank! –

0

Sie können es auch direkt am Gerät in Storyboard ... Überprüfen Sie meine Antwort hier: How to set UITabBarItem's unselected tint, ***including system items*** (iOS7)

Wenn Sie Storyboa verwenden Sie können auch Image für Bar Item und Selected Image für Selected Bar Item setzen, um ein unverändertes Bild in tabBar zu erhalten.

Alternativ in Assets Katalog können Sie Render As wählen: Original Image in den Attributen des Bildes (View>Utilities>Show Attributes Inspector oder Abkürzung ⌥⌘4 (Option + Befehl + 4))

+0

nicht wahr in iOS 11 – coolcool1994

14

Sie können auch das Bild rendern als Original aus dem Inspektor Attribute für die Asset-Datei, ohne Code zu schreiben

enter image description here

+1

Es ist nicht aus dem Storyboard, sondern aus dem Attribute Inspector für die Asset-Datei. Abgesehen davon ist dies die beste Antwort hier. – Marmoy

Verwandte Themen