Il y a quelques bonnes idées dans les réponses existantes, beaucoup fonctionnent légèrement différemment et ce que vous choisissez dépendra également des appareils que vous ciblez et du type de look que vous souhaitez obtenir. UITabBar
est notoirement peu intuitif lorsqu'il s'agit de personnaliser son apparence, mais voici quelques astuces supplémentaires qui peuvent aider:
1). Si vous cherchez à vous débarrasser de la superposition brillante pour un look plus plat, faites:
tabBar.backgroundColor = [UIColor darkGrayColor]; // this will be your background
[tabBar.subviews[0] removeFromSuperview]; // this gets rid of gloss
2). Pour définir des images personnalisées sur les boutons tabBar, procédez comme suit:
for (UITabBarItem *item in tabBar.items){
[item setFinishedSelectedImage:selected withFinishedUnselectedImage:unselected];
[item setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)];
}
Où selected
et unselected
sont les UIImage
objets de votre choix. Si vous souhaitez qu'ils soient une couleur plate, la solution la plus simple que j'ai trouvée est de créer un UIView
avec le désiré backgroundColor
, puis de le restituer en un UIImage
à l'aide de QuartzCore. J'utilise la méthode suivante dans une catégorie UIView
pour obtenir un UIImage
avec le contenu de la vue:
- (UIImage *)getImage {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [[UIScreen mainScreen]scale]);
[[self layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage;
}
3) Enfin, vous souhaiterez peut-être personnaliser le style des titres des boutons. Faire:
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];
}
Cela vous permet de faire quelques ajustements, mais encore assez limités. En particulier, vous ne pouvez pas modifier librement l'emplacement du texte dans le bouton et ne pouvez pas avoir des couleurs différentes pour les boutons sélectionnés / non sélectionnés. Si vous voulez faire une mise en page de texte plus spécifique, définissez simplement UITextAttributeTextColor
pour être clair et ajoutez votre texte dans les images selected
et unselected
de la partie (2).