Come posso modificare i colors del testo e dell’icona per tabBarItems in iOS 7?

Come posso modificare i colors di testo e icone per UITabBar e UITabBarItems in iOS 7? Il testo grigio predefinito sembra debole e difficile da leggere per gli elementi della tabbar non selezionati.

Ci sono due cose che devi fare per questo:

1) Se si desidera personalizzare TabBar, è necessario impostare barTintColor per tabBarController:

// this will generate a black tab bar tabBarController.tabBar.barTintColor = [UIColor blackColor]; // this will give selected icons and text your apps tint color tabBarController.tabBar.tintColor = appTintColor; // appTintColor is a UIColor * 

2) Impostare l’aspetto del testo tabBarItem per ogni stato che si desidera sovrascrivere:

 [[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:10.0f], NSForegroundColorAttributeName : appTintColor } forState:UIControlStateSelected]; // doing this results in an easier to read unselected state then the default iOS 7 one [[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:10.0f], NSForegroundColorAttributeName : [UIColor colorWithRed:.5 green:.5 blue:.5 alpha:1] } forState:UIControlStateNormal]; 

Questo ha funzionato per me, per tintare gli elementi non attivi nella barra delle linguette

 UITabBarItem *item = [self.tabBar.items objectAtIndex:1]; 

// qui devi usare l’icona con il colore che desideri, in quanto sarà renderizzata così com’è

 item.image = [[UIImage imageNamed:@"unselected.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

// questa icona è usata per la scheda selezionata e diventerà colorata come definito in

 self.tabBar.tintColor item.selectedImage = [UIImage imageNamed:@"selected.png"]; 

La risposta di Ed è perfetta, ma lascia che aggiunga una cosa. TabBar è in default trasshiny, quindi influenzato dal colore della vista sotto TabBar (vale a dire che ciascun membro viewController ha il colore della vista sull’aspetto TabBar).

Così ho impostato sotto il codice per non essere influenzato.

 self.tabBarController.tabBar.translucent = false; 

Insieme alla risposta di Ed ecco un codice completo che uso ora.

 self.tabBarController.tabBar.barTintColor = [UIColor blackColor]; self.tabBarController.tabBar.translucent = false; self.tabBarController.tabBar.tintColor = [UIColor blueColor]; 

Testato su iOS 8 per colore del testo permanente (selezionato / deselezionato) e colors dell’immagine (selezionato / deselezionato) senza creare due immagini con scheda foreach di colors diversi:

Colore del testo:

 [[UITabBar appearance] setTintColor: selectedTabColor ]; [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: **yourFont**, NSFontAttributeName, ** selectedTabColor**, NSForegroundColorAttributeName, nil] forState:UIControlStateNormal]; [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: **yourFont**, NSFontAttributeName, **selectedTabColor**, NSForegroundColorAttributeName, nil] forState:UIControlStateSelected]; 

Colore immagini: (assumendo che le immagini originali abbiano il colore che si desidera visualizzare come non selezionato)

In una sottoclass UITabBarController -wakeFromNib:

  for (int i =0; i 

Crediti: l'intero Internet e lo stack overflow XD

Codice gratuito per modificare il colore del testo nella barra delle tabs:

Se si utilizza solo iOS 10, è ansible modificare la tinta immagine nella barra delle tabs

inserisci la descrizione dell'immagine qui

Se si supporta anche iOS 9 e versioni precedenti, è necessario aggiungere anche tintColor agli attributi utente di runtime definer in ciascun elemento della barra delle tabs

inserisci la descrizione dell'immagine qui

se desideri anche cambiare il colore dell’icona, assicurati che l’immagine a colors corretta sia nella cartella della tua assest e cambia Render come a Immagine originale

inserisci la descrizione dell'immagine qui

Questo dovrebbe funzionare perfettamente anche per iOS 8

Per elemento tabbar non selezionato:

 [[UIView appearanceWhenContainedIn:[UITabBar class], nil] setTintColor: [UIColor whiteColor]]; 

Per l’elemento della barra delle tabs selezionato:

 [[UITabBar appearance] setTintColor:[UIColor orangeColor]]; 
 [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], UITextAttributeTextColor, nil] 

usa self.tabBarController.tabBar.barStyle = UIBarStyleBlack; per rendere la barra delle tabs nera

Provaci

 for (UITabBarItem *item in self.tabBarController.tabBar.items) { item.image = [[UIImage imageNamed:@"youimage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], UITextAttributeTextColor, nil] forState:UIControlStateNormal]; item.selectedImage = [UIImage imageNamed:@"youimage.png"]; } 

@Usharao risposta sopra ha funzionato per me;

Il mio problema era all’avvio tutti i TabBarItem sembravano in uno stato selezionato, tutti con lo stesso colore “blu”. Selezionando tutte le tabs una per volta, lo stato colorato verrebbe corretto.

Ho usato questo codice qui sotto nella mia class AppDelegate: (compatibile per> = IOS9)

 [[UIView appearanceWhenContainedInInstancesOfClasses:@[[UITabBar class]]] setTintColor:[UIColor lightGrayColor]];