我试图找到一种方法来改变UITabBar上非活动图像的色调颜色 - 这是我当前进展的图像
我试图将灰色图像的颜色改为当前任何其他颜色,没有任何运气。这是我正在使用的代码:
[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];
[[UITabBar appearance] setTintColor:[UIColor whiteColor]];
我一直在谷歌搜索某种方式来完成这项工作,但我没有运气。非常感谢任何帮助。
答案 0 :(得分:2)
如果您正试图在UITabBar上显示实际图像,请使用以下代码:
tabBarItem.image = [tabImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
如果您想以原始状态显示所选图像,请使用以下内容:
tabBarItem.selectedImage = [tabImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
这两个方法可以替代已弃用的方法setFinishedSelectedImage:
和withFinishedUnselectedImage:
答案 1 :(得分:1)
您可以为每个标签栏按钮一次执行此操作,如下所示:
UIImage *rawImage = [[myVC tabBarItem] image];
[[myVC tabBarItem] setFinishedSelectedImage:[rawImage imageWithColorMask:[UIColor grayColor]] withFinishedUnselectedImage:[rawImage imageWithColorMask:[UIColor greenColor]]];
编辑: 如果您想在iOS 7之前支持iOS,则上面是最佳选择,但不推荐使用此方法。对于iOS 7及更高版本,您只需将标签栏项目的图像设置为一个图像,该图像指定您不希望iOS为您进行颜色屏蔽,如下所示:
// assuming you have a UIImage ready to go...
myImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[[myVC tabBarItem] setSelectedImage:myImage];
答案 2 :(得分:0)
我认为这是一个两步过程:
1)使用UIImageRenderingModeAlwaysTemplate创建图像
tabBarItem.image = [tabImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
2)子类UIViewController并贡献给-(void)tintColorDidChange
- (void) tintColorDidChange {
switch (self.tintAdjustmentMode) {
case UIViewTintAdjustmentModeNormal: {
tabBarItem.tintColor = [UIColor cyanColor];
}
break;
case UIViewTintAdjustmentModeDimmed: {
tabBarItem.tintColor = [UIColor magentaColor];
}
break;
case UIViewTintAdjustmentModeAutomatic: {
tabBarItem.tintColor = [UIColor yellowColor];
}
break;
}
}
只要系统更改了tintColor, -(void)tintColorDidChange
就会触发。