Existem algumas boas ideias nas respostas existentes, muitas funcionam de maneira um pouco diferente e o que você escolhe também dependerá de quais dispositivos você visa e que tipo de aparência você pretende alcançar. UITabBar
é notoriamente pouco intuitivo quando se trata de personalizar sua aparência, mas aqui estão mais alguns truques que podem ajudar:
1). Se você deseja se livrar da sobreposição brilhante para uma aparência mais plana, faça:
tabBar.backgroundColor = [UIColor darkGrayColor]; // this will be your background
[tabBar.subviews[0] removeFromSuperview]; // this gets rid of gloss
2). Para definir imagens personalizadas para os botões da barra de guias, faça algo como:
for (UITabBarItem *item in tabBar.items){
[item setFinishedSelectedImage:selected withFinishedUnselectedImage:unselected];
[item setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)];
}
Onde selected
e unselected
são UIImage
objetos de sua escolha. Se você quiser que eles tenham uma cor lisa, a solução mais simples que encontrei é criar um UIView
com o desejado backgroundColor
e então apenas renderizá-lo em um UIImage
com a ajuda do QuartzCore. Eu uso o seguinte método em uma categoria UIView
para obter um UIImage
com o conteúdo da visualização:
- (UIImage *)getImage {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [[UIScreen mainScreen]scale]);
[[self layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage;
}
3) Finalmente, você pode querer personalizar o estilo dos títulos dos botões. Faz:
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];
}
Isso permite que você faça alguns ajustes, mas ainda bastante limitados. Particularmente, você não pode modificar livremente onde o texto é colocado dentro do botão e não pode ter cores diferentes para botões selecionados / não selecionados. Se você quiser fazer um layout de texto mais específico, basta definir UITextAttributeTextColor
para ser claro e adicionar seu texto nas imagens selected
e unselected
da parte (2).