Hay algunas buenas ideas en las respuestas existentes, muchas funcionan de manera ligeramente diferente y lo que elija también dependerá de los dispositivos a los que se dirija y del tipo de aspecto que desee lograr. UITabBares notoriamente poco intuitivo cuando se trata de personalizar su apariencia, pero aquí hay algunos trucos más que pueden ayudar:
1). Si está buscando deshacerse de la superposición brillante para una apariencia más plana, haga:
tabBar.backgroundColor = [UIColor darkGrayColor];
[tabBar.subviews[0] removeFromSuperview];
2). Para configurar imágenes personalizadas en los botones de tabBar, haga algo como:
for (UITabBarItem *item in tabBar.items){
[item setFinishedSelectedImage:selected withFinishedUnselectedImage:unselected];
[item setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)];
}
Donde selectedy unselectedson UIImageobjetos de tu elección. Si desea que sean de un color plano, la solución más simple que encontré es crear un UIViewcon el deseado backgroundColory luego convertirlo en un UIImagecon la ayuda de QuartzCore. Utilizo el siguiente método en una categoría UIViewpara obtener un UIImagecontenido de la vista:
- (UIImage *)getImage {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [[UIScreen mainScreen]scale]);
[[self layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage;
}
3) Por último, es posible que desee personalizar el estilo de los títulos de los botones. Hacer:
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];
}
Esto le permite hacer algunos ajustes, pero aún bastante limitados. En particular, no puede modificar libremente dónde se coloca el texto dentro del botón y no puede tener diferentes colores para los botones seleccionados / no seleccionados. Si desea hacer un diseño de texto más específico, simplemente configúrelo UITextAttributeTextColorpara que sea claro y agregue su texto en las imágenes selectedy unselectedde la parte (2).