2012-05-21 10 views
5

ho creato un semplice TabBar personalizzato impostando le immagini di ciascuna voce, come segue:regolare l'altezza dei UITabBar

UITabBar *tabBar = self.tabBarController.tabBar; 
UITabBarItem *item0 = [tabBar.items objectAtIndex:0]; 
UITabBarItem *item1 = [tabBar.items objectAtIndex:1]; 
UITabBarItem *item2 = [tabBar.items objectAtIndex:2]; 

[item0 setFinishedSelectedImage:[UIImage imageNamed:@"activity_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"activity.png"]]; 
[item1 setFinishedSelectedImage:[UIImage imageNamed:@"agenda_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"agenda.png"]]; 
[item2 setFinishedSelectedImage:[UIImage imageNamed:@"settings_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"settings.png"]]; 

Mentre questo funziona alla grande, ho notato che c'è uno spazio vuoto nero sotto il mio TabBar

enter image description here

le mie immagini sono 44px in altezza, ma penso che devo cambiare in qualche modo l'altezza della mia barra delle linguette.

risposta

0

Usa -

tabBar.frame=CGRectMake(x,y,w,h); 

In questo modo è possibile impostare xCord, yCord, larghezza e altezza.

+0

Grazie, ma stranamente quando ho impostato il y per self.window.frame.size.height, è ancora visibile per pochi px. Lo stesso per quando uso [tabBar setFrame: CGRectMake (0.0f, self.window.frame.size.height - 44, self.window.frame.size.width, 44.0f)] ;, Posso ancora vedere il evidenziare la scheda selezionata nella gabbia nera sotto di esso –

+0

è necessario registrare questi valori y e verificare se si stanno ottenendo questi valori correttamente? – rishi

+0

self.window.frame.size.height: 480, taBar.frame.origin.y: 436, tabBar.frame.size.heigh: 44. Quando faccio uno screenshot e controllo Photoshop, la tabbar è solo su 428 px sull'asse y. –

2

Il tabBar è di 49px ed è reso in colore nero dietro le immagini (forse in). Quindi le tue immagini vengono visualizzate in cima. Il motivo dell'offset è perché le immagini fornite sono troppo grandi, UITabBar si aspetta icone 30x30px, non un'immagine dell'intero UITabBarItem.

Ecco alcune cose da provare:

  1. alimentazione solo un'icona di 30x30 px, anziché l'intero tasto scheda
  2. Dopo aver impostato le immagini sulla voce scheda, provate questo: [item setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)]; // play with insets until it renders correctly
  3. Sottoclassi UITabBar e sostituisci layoutSubviews in prima chiamata super, quindi riposiziona l'immagine come preferisci. Non consigliato, potrebbe rompersi nelle future versioni di iOS.
+0

L'opzione 2 impressionante ha fatto il trucco per me. Grazie :) – SuperKevin

0

Controllare questo:

[self.tabBar setFrame:CGRectMake(self.tabBar.frame.origin.x, self.tabBar.frame.origin.y - 30, self.tabBar.frame.size.width, self.tabBar.frame.size.height + 30)]; 
+1

Questo funziona finché non si seleziona un elemento dalla barra delle schede, quindi si reimposta. Come lo risolvi? –

Problemi correlati