В существующих ответах есть несколько хороших идей, многие из них работают немного по-другому, и то, что вы выберете, будет также зависеть от того, на какие устройства вы нацеливаетесь и какой вид вы хотите достичь. UITabBar
общеизвестно не интуитивен, когда дело доходит до настройки его внешнего вида, но вот еще несколько приемов, которые могут помочь:
1). Если вы хотите избавиться от глянцевой накладки для более плоского вида, сделайте:
tabBar.backgroundColor = [UIColor darkGrayColor]; // this will be your background
[tabBar.subviews[0] removeFromSuperview]; // this gets rid of gloss
2). Чтобы настроить пользовательские изображения для кнопок tabBar, сделайте что-то вроде:
for (UITabBarItem *item in tabBar.items){
[item setFinishedSelectedImage:selected withFinishedUnselectedImage:unselected];
[item setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)];
}
Где selected
и unselected
являются UIImage
объектами на ваш выбор. Если вы хотите, чтобы они были ровного цвета, самое простое решение, которое я нашел, - это создать UIView
с желаемым backgroundColor
, а затем просто преобразовать его в UIImage
с помощью QuartzCore. Я использую следующий метод в категории на UIView
, чтобы получить UIImage
с содержимым представления:
- (UIImage *)getImage {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [[UIScreen mainScreen]scale]);
[[self layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage;
}
3) Наконец, вы можете настроить стиль заголовков кнопок. Есть:
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];
}
Это позволяет вам делать некоторые корректировки, но все же довольно ограниченно. В частности, вы не можете свободно изменять расположение текста внутри кнопки и не можете иметь разные цвета для выбранных / невыбранных кнопок. Если вы хотите сделать более конкретный текстовый макет, просто установите UITextAttributeTextColor
, чтобы очистить и добавьте ваш текст в selected
и unselected
изображений из части (2).