UINavigationBar和UISearchBar都有一个tintColor属性,允许您更改这两个项的色调颜色(令人惊讶,我知道)。我想在我的应用程序中对UITabBar做同样的事情,但现在已经找到了将其从默认的黑色更改为黑色的方法。有什么想法吗?
发布于 2009-03-14 17:17:57
我已经能够通过将UITabBarController子类化并使用私有类来实现它:
@interface UITabBarController (private)
- (UITabBar *)tabBar;
@end
@implementation CustomUITabBarController
- (void)viewDidLoad {
[super viewDidLoad];
CGRect frame = CGRectMake(0.0, 0.0, self.view.bounds.size.width, 48);
UIView *v = [[UIView alloc] initWithFrame:frame];
[v setBackgroundColor:kMainColor];
[v setAlpha:0.5];
[[self tabBar] addSubview:v];
[v release];
}
@end
发布于 2011-12-20 05:18:09
iOS 5添加了一些新的外观方法,用于自定义大多数UI元素的外观。
您可以通过使用外观代理来定位应用程序中的每个UITabBar实例。
对于iOS 5+ 6:
[[UITabBar appearance] setTintColor:[UIColor redColor]];
对于iOS 7及更高版本,请使用以下选项:
[[UITabBar appearance] setBarTintColor:[UIColor redColor]];
使用外观代理将更改整个应用程序中的任何选项卡栏实例。对于特定实例,使用该类的一个新属性:
UIColor *tintColor; // iOS 5+6
UIColor *barTintColor; // iOS 7+
UIColor *selectedImageTintColor;
UIImage *backgroundImage;
UIImage *selectionIndicatorImage;
发布于 2009-12-31 04:51:35
我有一个最终答案的附录。虽然基本方案是正确的,但使用部分透明颜色的技巧可以改进。我假设它只是为了让默认的渐变显示出来。哦,另外,TabBar的高度是49像素,而不是48像素,至少在OS3中是这样。
因此,如果你有一个合适的1 x 49渐变图像,这是你应该使用的viewDidLoad版本:
- (void)viewDidLoad {
[super viewDidLoad];
CGRect frame = CGRectMake(0, 0, 480, 49);
UIView *v = [[UIView alloc] initWithFrame:frame];
UIImage *i = [UIImage imageNamed:@"GO-21-TabBarColorx49.png"];
UIColor *c = [[UIColor alloc] initWithPatternImage:i];
v.backgroundColor = c;
[c release];
[[self tabBar] addSubview:v];
[v release];
}
https://stackoverflow.com/questions/571028
复制相似问题