我在代码中创建一个TabBar:
self = [super init];
self.tabBarController = [[UITabBarController alloc]init];
self.tabBarController.delegate = self;
self.tabBarController.navigationController.delegate = self;
//Build Model
NSArray *topLevelControllers = [self buildTopLevelControllers];
[self.tabBarController setViewControllers:topLevelControllers animated:NO];
//Inbox will be lead navigation
self.tabBarController.selectedIndex = kSelectedIndex;
[self.view addSubview:self.tabBarController.view];
self.tabBarController.customizableViewControllers = @[];
return self;
}
在App Delegate中,我有以下Tint代码:
[[UIView appearance] setTintColor:[ColorUtils globalTintColor]];
问题:当应用启动时,标签栏中的所有图标都会使用全局颜色进行着色。当我选择一个然后取消选择它们时,它们将返回到灰色(图像默认颜色)。
所需结果:应用启动时,所有按钮均为灰色(灰色是PNG中的图像颜色)。当我点击标签栏图标时,颜色会变为全局色调颜色。
尝试:在App委托中,我添加了以下代码,但它不起作用:
TabBarVC *tabBarVC = [[TabBarVC alloc]init];
tabBarVC.tabBarController.tabBar.tintColor = [UIColor greyColor];
tabBarVC.tabBarController.tabBar.selectedImageTintColor = [STColorUtils globalTintColor];
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [ColorUtils globalTintColor]}];
[[UIView appearance] setTintColor:[ColorUtils globalTintColor]];
[self.window setRootViewController:tabBarVC];
但是,如果我发表评论:
//[[UIView appearance] setTintColor:[ColorUtils globalTintColor]];
图标显示为灰色,但全局色调颜色为iOS7默认值:蓝色。
答案 0 :(得分:3)
iOS 7中的selectedImageTintColor存在一个已知问题。我检查过这个问题尚未解决。所以删除 -
tabBarVC.tabBarController.tabBar.selectedImageTintColor = [STColorUtils globalTintColor];
你也想使用UITabBar的外观,所以替换
[[UIView appearance] setTintColor:[ColorUtils globalTintColor]];
与
[[UITabBar appearance] setTintColor:[ColorUtils globalTintColor]];
答案 1 :(得分:2)
这是迄今为止我发现的最佳解决方案:
[UIView appearance].tintColor = [UIColor redColor];
// the selected image and text will still use UIView.tintColor.
// this is to tint the unselected images until they are tapped
// [UIColor grayColor] does not exactly match the default color, but it's subtle
[UIView appearanceWhenContainedIn:[UITabBar class], nil].tintColor = [UIColor grayColor];
使用swift时我需要创建一个包含+(UIView *)viewAppearanceWhenContainedInTabBar()方法的objective-c文件来使用[UIView appearanceWhenContainedIn:]方法,因为它不适用于swift :(
答案 2 :(得分:1)
更改UIWindow的tintColor属性。它应用于添加到此窗口的每个UIView。