2010-12-04 19 views

Respuesta

0

Si entiendo su pregunta correctamente, desea personalizar el color del texto en el UITabBarItem s. Lamentablemente, realmente no es tan flexible. Si tiene la intención de hacer esto (que, a menos que haya considerado cuidadosamente el diseño con la ayuda de un profesional, ¡no lo recomiendo!), Tendrá que hacer cosas realmente aterradoras para que esto funcione.

Sugiero iterar a través de las subvistas de UITabBar (tantos niveles como sea necesario) y buscar objetos UILabel. Si encuentra alguno, puede cambiar su color. Si no lo hace, eso significa que se implementa de manera diferente (probablemente en algún lugar en un método -drawRect:); si este fuera el caso, realmente deberías rendirte.

La mejor de las suertes en lo que decida hacer.

+0

@ Jonathan esterlina ...... ...... gracias tio lo intentaré –

+0

No hay problema! :-) –

-1

Eso es posible gracias a -drawRect:, sino por hacer que está altamente aumentando las posibilidades de su aplicación para ser rechazado por la App Store

+0

¿Qué? Drawrect es el método estándar para diseñar un UIView. – quantumpotato

22

Utilizando el protocolo UIAppearance (iOS5 +) esto es ahora posible, y de hecho bastante fácil.

[UITabBarItem.appearance setTitleTextAttributes:@{ 
     UITextAttributeTextColor : [UIColor greenColor] } forState:UIControlStateNormal]; 

[UITabBarItem.appearance setTitleTextAttributes:@{ 
     UITextAttributeTextColor : [UIColor purpleColor] }  forState:UIControlStateSelected]; 

Disculpe los colores horribles!

+3

¡Gracias por esta respuesta! Para iOS7 +, UITextAttributeTextColor ha quedado obsoleto y ahora puede usar NSForegroundColorAttributeName. – Will

1

Esto es lo que finalmente funcionó para mí:

1) El texto seleccionado de color

[[UIView appearance] setTintColor:someColor]; 

2) el texto no seleccionado (también cambia de color de imagen)

[[UITabBar appearance] setTintColor:anotherColor]; 
2

Sólo para aclarar las cosas un poco ...

Si desea cambiar el aspecto de todos los elementos de la barra de pestañas, utilice:

Objective-C:

[[UITabBarItem appearance] setTitleTextAttributes:@{UITextAttributeTextColor :[UIColor someColor]} forState:UIControlStateSelected]; 

Swift:

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.someColor()], forState: .Selected) 

Sin embargo, si sólo desea configurar la apariencia de un solo elemento hacerlo de esta manera:

Objetivo-C:

[self.tabBarItem setTitleTextAttributes:@{UITextAttributeTextColor :[UIColor someColor]} forState:UIControlStateSelected]; 

Swift:

tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.someColor()], forState: .Selected) 

Nota: tabBarItem es una propiedad en UIViewController.Esto significa que mientras que cada UIViewController tiene esta propiedad, puede no ser el tabBarItem que está buscando. Este es a menudo el caso cuando su controlador de vista se incluye en un UINavigationController. En este caso, acceda al tabBarItem en el controlador de navegación, no al que está en su controlador de vista raíz (u otro).

1

Ésta es la versión rápida: -

for item in self.mainTabBar.items! { 

    let unselectedItem: NSDictionary = [NSForegroundColorAttributeName: UIColor.whiteColor()] 
    let selectedItem: NSDictionary = [NSForegroundColorAttributeName: UIColor.whiteColor()] 
    item.setTitleTextAttributes(unselectedItem as? [String : AnyObject], forState: .Normal) 
    item.setTitleTextAttributes(selectedItem as? [String : AnyObject], forState: .Selected) 

    } 
Cuestiones relacionadas