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. UITabBar
es 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 selected
y unselected
son UIImage
objetos de tu elección. Si desea que sean de un color plano, la solución más simple que encontré es crear un UIView
con el deseado backgroundColor
y luego convertirlo en un UIImage
con la ayuda de QuartzCore. Utilizo el siguiente método en una categoría UIView
para obtener un UIImage
contenido 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 UITextAttributeTextColor
para que sea claro y agregue su texto en las imágenes selected
y unselected
de la parte (2).