2011-08-21 10 views

risposta

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

questo ha effetto su ogni barra delle linguette si utilizza (anche quelli sottoclasse)

Se si utilizza un'immagine qui che ha lo stesso colore come sfondo TabBar, è solito vedere un indicatore.

Forse si può anche usare un'immagine completamente trasparente o un'immagine che è 1px * 1px.

+2

Usa http://ioscodesnippet.tumblr.com/post/9247898208/creating -un-segnaposto -immagine-dinamicamente-con-colore per creare l'immagine chiara. Funziona alla grande. – nh32rg

5

Nel caso in cui si personalizzino gli elementi della barra delle schede con immagini personalizzate, è possibile eseguire tale operazione. Ho personalizzato gli elementi della barra delle schede aggiungendo un'immagine di sfondo alla barra delle schede con tutte le schede disegnate, una scheda nello stato selezionato e altre in stato non selezionato. In ogni didelectViewController ho cambiato l'immagine di sfondo. Quindi, porto in primo piano la vista dell'immagine di sfondo e aggiungo etichette personalizzate con il titolo necessario.

Risultato: ho una barra delle linguette personalizzata senza effetto lucido. Interessante è che UITabBarButtons sono sotto l'immagine di sfondo, ma ancora selezionabili.

il codice è qualcosa di simile:

- (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. 

} 

Forse saranno interessati su questo :)

+0

dove dovrei aggiungere questo codice? – chatur

+2

in tale UIViewController , che sta implementando il delegato del controller della barra delle schede. È necessaria l'immagine per il pannello intero della barra delle schede per ogni elemento della barra delle schede, che rappresenta l'immagine dell'articolo corrente nello stato selezionato e altri nello stato predefinito. Secondo l'indice di tabulazione selezionato, lo sfondo è sostituito in - (void) personalizzaBarBar – Mitya

+0

Grazie mille Mitya .. !! – chatur

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

funziona come un fascino!

+3

Qualcuno dovrebbe contrassegnare questo come corretto .. <3 –

+0

Risposta eccellente, ma essere consapevoli del fatto che ciò influirà su TUTTI UITabBars, anche su quelli che sono sottoclassi. –

1

Secondo Apple's documentazione è possibile implementare:

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

che è un metodo UITabBar

Here´s the link.

Problemi correlati