2014-07-02 7 views
7

Meine aktuellen Tab-Leiste sieht wie folgt zu ändern:wie tabBar Symbolfarbe in ios

enter image description here

Mein Code ist wie folgt:

-(void)startTabBar{ 
    self.tabBarController = [[UITabBarController alloc] init]; 
    TAB_1 *tab_1 = [[TAB_1 alloc]init]; 
    TAB_2 *tab_2 = [[TAB_2 alloc]init]; 
    TAB_3 *tab_3 = [[TAB_3 alloc]init]; 

    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor blackColor], NSForegroundColorAttributeName, nil] forState:UIControlStateNormal]; 
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor], NSForegroundColorAttributeName,nil] forState:UIControlStateSelected]; 

    NSArray* controllers = [NSArray arrayWithObjects:tab_1,tab_2, tab_3, nil]; 

    self.tabBarController.viewControllers = controllers; 
    self.window.rootViewController = self.tabBarController; 
} 

Was ich tun möchte, ist:

Normale Registerkarte: Titel der Registerkarte sollte schwarz wie es ist aber nur Icon-Bild sollte schwarz sein. Erwartete Tab sollte wie:

enter image description here

Ausgewählte Registerkarte: Titel Tab rot sein sollte, da es aber nur Symbolbild ist rot sein sollte. Erwartete Tab sollte wie:

enter image description here

Tableiste Farbe: die ganze tabBar Farbe transparenter zu machen mit der gleichen Farbe

Kann mir jemand helfen, dies zu tun?

+0

Check diese Antwort http://stackoverflow.com/a/18742880/1679187 –

+0

@YogeshSuthar Diese Antwort ist veraltet – michaelsnowden

Antwort

21

Dadurch wird erreicht, was Sie fragen nach:

[[UITabBar appearance] setSelectedImageTintColor:[UIColor redColor]]; 
[[UITabBar appearance] setAlpha:0.25]; 
+0

ja, Ihr Recht haben und es setzt Transparenz zur Tableiste. Außerdem musste ich // auskommentieren [[self tabBarItem] setImage: [[UIImage imageNamed: @ "icon_feed.png"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]]; in Initwithinib Methode bei jeder Registerkarte Klasse – Lasang

+0

Vielen Dank. Es funktioniert. – Raja

4

In Swift auf iOS8 wäre es: hier

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

Die Antworten sind nicht ganz das, was ich suchte. Es ist sinnvoll, wenn Sie eine generelle Änderung der Farbe aller Tab-Controller in Ihrer App wünschen, aber realistisch gesehen möchten Sie nicht unbedingt eine solche globale Änderung vornehmen (ganz zu schweigen davon, dass das Debuggen und Suchen später schwierig sein kann)). Es ist besser, konzentrierter zu sein, also möchten Sie die Farbe direkt ändern.

Ab iOS 8 müssen Sie die tintColor Eigenschaft der Registerkartenleiste ändern. Hoffentlich untergliedern Sie Ihre UITabBarController. Wenn Sie sind, können Sie die Farbe in viewDidLoad gesetzt:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.tabBar.tintColor = [UIColor grayColor]; 
}