2011-08-21 10 views

Respuesta

6
[[UITabBar appearance] setSelectionIndicatorImage:[UIImage {anImage}]] 

esto no tiene efecto en cada barra de pestañas que utiliza (incluso las subclases unos)

Si utiliza una imagen aquí que tiene el mismo color que su fondo de barra de pestañas, que no verá un indicador.

Tal vez incluso pueda usar una imagen transparente completa, o una imagen que sea 1px * 1px.

+2

Uso http://ioscodesnippet.tumblr.com/post/9247898208/creating -a-placeholder-uiimage-dynamically-with-colour para crear la imagen clara. Funciona genial. – nh32rg

5

En caso de que esté personalizando los elementos de la barra de pestañas con imágenes personalizadas, puede hacerlo. Hice la personalización de elementos de la barra de pestañas al agregar una imagen de fondo a la barra de pestañas con todas las pestañas dibujadas, una pestaña en estado seleccionado y otras en estado no seleccionado. En cada didSelectViewController cambio la imagen de fondo. Entonces, traigo la vista de la imagen de fondo al frente y agrego etiquetas personalizadas con el título necesario.

Resultado: Tengo una barra de pestañas personalizada sin efecto brillante. Es interesante que UITabBarButtons se encuentren en la imagen de fondo, pero aún se pueden seleccionar.

El código es algo así:

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

- (void)customizeTabBar { 

    NSString *imageName = [NSString stringWithFormat:@"tabbg%i.png", tabBarCtrl.selectedIndex + 1]; 

    for(UIView *view in tabBarCtrl.tabBar.subviews) { 
     if([view isKindOfClass:[UIImageView class]]) { 
      [view removeFromSuperview]; 
     } 
    } 
    UIImageView *background = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:imageName]] autorelease]; 
    [tabBarCtrl.tabBar insertSubview:background atIndex:0]; 
    [tabBarCtrl.tabBar bringSubviewToFront:background]; 
     //if needed, here must be adding UILabels with titles, I didn't need it. 

} 

Usted estará quizá interesado acerca de esto :)

+0

¿dónde debería agregar este código? – chatur

+2

en ese UIViewController , que está implementando el delegado del controlador de la barra de pestañas. Necesita una imagen para el panel de la barra de pestañas completo para cada elemento de la barra de pestañas, que representa la imagen del elemento actual en el estado seleccionado, y otra en el estado predeterminado. De acuerdo con el índice de pestañas seleccionado, el fondo se reemplaza en - (void) personalizarTabBar – Mitya

+0

Muchas gracias Mitya .. !! – chatur

60
[[UITabBar appearance] setSelectionIndicatorImage:[[UIImage alloc] init]]; 

funciona como un encanto!

+3

Alguien debería marcar este como correcto .. <3 –

+0

Excelente respuesta, pero tenga en cuenta que esto afectará TODA UITabBars, incluso aquellas que son subclases. –

1

Según Apple's documentación se puede implementar:

(void)setFinishedSelectedImage: 
     (UIImage *)selectedImage withFinishedUnselectedImage: 
     (UIImage *)unselectedImage 

que es un método UITabBar

Here´s the link.

Cuestiones relacionadas