2014-07-02 4 views
7

Il mio bar scheda corrente appare come segue:come cambiare TabBar icona di colore in ios

enter image description here

Il mio codice è il seguente:

-(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; 
} 

Quello che voglio fare è:

Scheda normale: Il titolo della scheda deve essere nero così com'è ma solo l'immagine dell'icona dovrebbe essere nera. scheda atteso dovrebbe essere come: scheda

enter image description here

selezionata: titolo di scheda dovrebbe essere rosso come lo è, ma solo un'immagine icona dovrebbe essere rossa. scheda atteso dovrebbe essere come:

enter image description here

scheda barra di colore: rendere il tutto di colore barra delle linguette più trasparente con lo stesso colore

Qualcuno può aiutare a fare questo?

+0

controllo questa risposta http://stackoverflow.com/a/18742880/1679187 –

+0

@YogeshSuthar La risposta è deprecato – michaelsnowden

risposta

21

Questo compie quello che stai chiedendo:

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

sì, il vostro sono a destra e imposta trasparenza alla barra delle linguette. Inoltre, ho dovuto decommentare // [[self tabBarItem] setImage: [[UIImage imageNamed: @ "icon_feed.png"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]]; in initwithinib method ad ogni tab classe – Lasang

+0

Grazie. Sta funzionando. – Raja

4

In Swift su iOS 8 sarebbe:

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

Le risposte qui non sono proprio quello che stavo cercando. Ha senso se si desidera una modifica generica al colore di tutti i controller della barra delle schede nella propria app, ma realisticamente, non si vuole necessariamente apportare una modifica globale (per non parlare del fatto che può essere difficile eseguire il debug e trovare successivamente). È meglio essere più concentrati, quindi è necessario modificare direttamente il colore.

A partire da iOS 8, è necessario modificare la proprietà tintColor della barra delle schede. Si spera che tu diventi sottoclasse il tuo UITabBarController. Se si, è possibile impostare il colore in viewDidLoad:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

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