猿问
下载APP

改变UITabBar的色调/背景颜色

UINavigationBar和UISearchBar都有一个tintColor属性,允许你改变这两个项目的色调(我知道)。我想在我的应用程序中对UITabBar做同样的事情,但现在已经找到了从默认的黑色中改变它的方法。有任何想法吗?



www说
浏览 109回答 3
3回答

拉风的咖菲猫

我已经能够通过子类化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

慕桂英546537

iOS 5添加了一些新的外观方法,用于自定义大多数UI元素的外观。您可以使用外观代理在应用程序中定位UITabBar的每个实例。对于iOS 5 + 6:[[UITabBar appearance] setTintColor:[UIColor redColor]];对于iOS 7及更高版本,请使用以下内容:[[UITabBar appearance] setBarTintColor:[UIColor redColor]];使用外观代理将更改整个应用程序中的任何标签栏实例。对于特定实例,请使用该类的一个新属性:UIColor *tintColor; // iOS 5+6UIColor *barTintColor; // iOS 7+UIColor *selectedImageTintColor;UIImage *backgroundImage;UIImage *selectionIndicatorImage;

翻过高山走不出你

我有一个最终答案的附录。虽然基本方案是正确的,但可以改进使用部分透明颜色的技巧。我假设它只是让默认渐变显示出来。哦,同样,TabBar的高度是49像素而不是48像素,至少在OS 3中是这样。因此,如果你有一个带有渐变的适当的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];}
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答