Ci sono alcune buone idee nelle risposte esistenti, molte funzionano in modo leggermente diverso e ciò che scegli dipenderà anche dai dispositivi che scegli come target e dal tipo di aspetto che desideri ottenere. UITabBar
è notoriamente poco intuitivo quando si tratta di personalizzarne l'aspetto, ma qui ci sono alcuni altri trucchi che possono aiutare:
1). Se stai cercando di sbarazzarti della sovrapposizione lucida per un aspetto più piatto, fai:
tabBar.backgroundColor = [UIColor darkGrayColor];
[tabBar.subviews[0] removeFromSuperview];
2). Per impostare immagini personalizzate sui pulsanti tabBar, fai qualcosa come:
for (UITabBarItem *item in tabBar.items){
[item setFinishedSelectedImage:selected withFinishedUnselectedImage:unselected];
[item setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)];
}
Dove selected
e unselected
sono UIImage
oggetti di tua scelta. Se desideri che siano un colore piatto, la soluzione più semplice che ho trovato è creare un UIView
con il desiderato backgroundColor
e poi renderlo in un UIImage
con l'aiuto di QuartzCore. Uso il seguente metodo in una categoria suUIView
per ottenere un UIImage
con i contenuti della vista:
- (UIImage *)getImage {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [[UIScreen mainScreen]scale]);
[[self layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage;
}
3) Infine, potresti voler personalizzare lo stile dei titoli dei pulsanti. Fare:
for (UITabBarItem *item in tabBar.items){
[item setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor redColor], UITextAttributeTextColor,
[UIColor whiteColor], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset,
[UIFont boldSystemFontOfSize:18], UITextAttributeFont,
nil] forState:UIControlStateNormal];
}
Ciò ti consente di apportare alcune modifiche, ma ancora piuttosto limitate. In particolare, non è possibile modificare liberamente la posizione del testo all'interno del pulsante e non è possibile avere colori diversi per i pulsanti selezionati / non selezionati. Se vuoi fare un layout del testo più specifico, imposta semplicemente UITextAttributeTextColor
che sia chiaro e aggiungi il tuo testo nelle immagini selected
e unselected
dalla parte (2).