2010-06-16 22 views

Respuesta

0

Consulte las respuestas this question y this question, pero tenga en cuenta que su aplicación podría ser rechazada por modificar los componentes predeterminados de la barra de tareas de esa manera.

+0

muchas gracias por su respuesta rápida, pero esto no me ayuda, ya que soy capaz de cambiar el color de las imágenes y este código hace lo mismo ... por favor sugiérame cómo cambiar el color del texto del uitabbaritem. – yogendra

+0

Esta pregunta estaba cambiando la imagen en el elemento de la barra de pestañas, necesito cambiar el color del texto en la pestaña barítima –

1

UITabBarItem es más o menos no personalizable por lo que si es necesario, se puede:

  1. A caballo por iteración a través de la subvistas UITabBar ‘s, encontrar las etiquetas usando -[NSObject isKindOfClass:] y cambiar su color.

  2. Cree su propio UITabBar y mueva los elementos personalizados de la barra de pestañas.

  3. Pruebe alternativas como Three20's TTTabBar.

+0

¿Qué obj debería buscar dentro de las subvistas ?! Me conecté y vi que hay un montón de 'UITabBarButton', ¡pero no sé cómo usar esa clase !? –

+0

Terminé creando una vista de barra de pestañas personalizada para el registro. –

2

EDIT: la siguiente ya no es la mejor práctica ya que las nuevas API se añadieron a la SDK de iOS

Subclase UITabBarController (como CustomTabBarController en este ejemplo) y poner el siguiente código en su archivo de implementación .m:

@interface CustomTabBarController() 

@property (nonatomic, retain) NSArray *tabTitleLabels; 

@end 


@implementation CustomTabBarController 

@synthesize tabTitleLabels; 

- (NSArray *)tabTitleLabels 
{ 
    // Check if we need to update the tab labels 
    if ([tabTitleLabels count] != [self.viewControllers count]) 
     self.tabTitleLabels = nil; 

    // Create custom tab bar title labels 
    if (!tabTitleLabels) 
    { 
     tabTitleLabels = [[NSMutableArray alloc] init]; 

     for (UIView *view in self.tabBar.subviews) 
     {  
      if ([NSStringFromClass([view class]) isEqualToString:@"UITabBarButton"]) 
      { 
       for (UIView *subview in view.subviews) 
       {          
        if ([subview isKindOfClass:[UILabel class]]) 
        { 
         UILabel *label = (UILabel *)subview; 

         UILabel *newLabel = [[UILabel alloc] init]; 
         newLabel.font = label.font; 
         newLabel.text = label.text; 
         newLabel.backgroundColor = label.backgroundColor; 
         newLabel.opaque = YES; 
         newLabel.frame = CGRectMake(0, 0, label.frame.size.width, label.frame.size.height -1);  
         [subview addSubview:newLabel]; 

         [((NSMutableArray *)tabTitleLabels) addObject:newLabel]; 
         [newLabel release]; 
        } 
       } 
      } 
     }  
    } 

    return tabTitleLabels; 
} 

// Customize the desired colors here 
- (void)recolorTabBarTitleLabels 
{ 
    for (UILabel *label in self.tabTitleLabels) 
    { 
     label.textColor = [UIColor whiteColor]; 
     label.backgroundColor = [UIColor blackColor]; 
    } 
    UILabel *selectedLabel = [self.tabTitleLabels objectAtIndex:self.selectedIndex]; 
    selectedLabel.textColor = [UIColor blueColor];    
    selectedLabel.backgroundColor = [UIColor colorWithWhite:.15 alpha:1]; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    [self recolorTabBarTitleLabels]; 
} 

- (void)tabBarController:(UITabBarController *)theTabBarController didSelectViewController:(UIViewController *)viewController 
{ 
    [self recolorTabBarTitleLabels]; 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    self.tabTitleLabels = nil; 
} 

- (void)dealloc 
{ 
    [tabTitleLabels release]; 
    [super dealloc]; 
} 

@end 

Esto puede ser un año de retraso, pero espero que mi código guarda a alguien algo de trabajo!

Nota: no está diseñado para admitir la activación/desactivación de nuevos elementos de la barra de pestañas, aunque solo tendría que restablecer tabTitleLabels a nil para hacerlo.

74

vieja pregunta, pero tengo una nueva respuesta que se soporta en iOS 5 en adelante (también estoy usando LLVM 4.0 literales)

[[UITabBarItem appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor whiteColor] } 
             forState:UIControlStateNormal]; 
[[UITabBarItem appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor blueColor] } 
             forState:UIControlStateSelected]; 
+0

+ para actualizar con las mejores prácticas nuevas. – DetartrateD

+0

estuvo de acuerdo con el comentario de Detartrate, ya que cuando puedes crear un diccionario usando @ {} ... Awesomeness. Muy JSONesque. –

+0

Desde el compilador de LLVM 4.0. Consulte los documentos para ver todas las demás cosas que puede hacer con los literales: http://clang.llvm.org/docs/ObjectiveCLiterals.html. También puede convertir su proyecto actual a la nueva sintaxis literal: XCode> Editar> Refactorizar> Convertir a moderno Objective-C Sintaxis ... Hace alrededor de un año que digo. – bandejapaisa

11

UITextAttributeTextColor está en desuso desde iOS 7. Uso NSForegroundColorAttributeName en lugar.

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

Y en Swift

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.blackColor()], forState: .Normal) 
0

para establecer el color de 2 UIControlState a la vez puede utilizar union:

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.redColor()], forState: UIControlState.Selected.union(UIControlState.Highlighted)) 
2

Puede que le ayuda

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

Swift3

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.brown], for: .normal) 
0

Debe ser sencillo!

[[UITabBar appearance] setTintColor:[UIColor blackColor]]; 
+0

Esto no proporciona una respuesta a la pregunta. Una vez que tenga suficiente [reputación] (https://stackoverflow.com/help/whats-reputation) podrá [comentar cualquier publicación] (https://stackoverflow.com/help/privileges/comment); en su lugar, [brinde respuestas que no requieran aclaración del autor de la pregunta] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-instead). - [De la opinión] (/ review/low-quality-posts/18808729) –

+0

Bienvenido a StackOverflow. Las respuestas con solo código en ellas tienden a marcarse para su eliminación ya que son de "baja calidad". Lea la sección de ayuda para responder preguntas y luego considere agregar algún comentario a su respuesta. – Graham

0

Desde iOS 10 es posible ajustar el unselectedItemTintColor en la UITabBar.

El tintColor del UITabBar es del color del elemento seleccionado.

Si desea ir a valores únicos para cualquier artículo, también puede configurar el tabBarItem.titleTextAttributes(for:) (mencionado anteriormente) también en el artículo directamente en combinación con tabBarItem.image y tabBarItem.selectedImage.

Cuestiones relacionadas