我使用以下代码为UITabBarItem
self.tabBarItem.image = [UIImage imageNamed:@"tab_img.png"];
此tab_img.png由黑色,白色和清晰的颜色组成。但在应用程序中,黑白图像的所有部分都变为灰色。我怎么能把这个灰色变成白色?
答案 0 :(得分:34)
在iOS7中,如果你使用IB,你可以继承UITabBarController,然后添加:
+ (void)initialize
{
//the color for the text for unselected tabs
[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor redColor]} forState:UIControlStateNormal];
//the color for selected icon
[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];
}
- (void)viewDidLoad
{
[super viewDidLoad];
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
for (UITabBarItem *tbi in self.tabBar.items) {
tbi.image = [tbi.image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}
}
}
如果您手动创建项目,则必须在每个图标上设置UIImageRenderingModeAlwaysOriginal并添加初始化的代码。
答案 1 :(得分:10)
设置选定和未选择的图像。
[self.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"mehr_icon"] withFinishedUnselectedImage:[UIImage imageNamed:@"mehr_icon"]];
答案 2 :(得分:6)
如果您使用的是图片资源,只需将图片的“渲染为”字段(选定图像和未选择的图像)设置为“原始图像”(Convert .Net Core to .Net Framework)
然后在您的xib中设置Tab Bar项目中的“Image”和“Selected Image”字段 (example)
答案 3 :(得分:3)
UITabBarItems的图像应该只是alpha通道! 不透明的部分只会显示为灰色(如果选中,则为蓝色)!
看看:http://devinsheaven.com/creating-uitabbar-uitoolbar-icons-in-adobe-illustrator/
答案 4 :(得分:0)
我曾遇到同样的问题,我只使用白色和alpha的图像,如image
我用self.tabBarItem.image = [UIImage imageNamed:@"Liste"];
答案 5 :(得分:0)
Only Way是转到IB(界面构建器)并在View Controller中选择UITabBarItem并转到“文件检查器”向下滚动,你会看到Global Tint她可以将它设置为没有颜色或任何颜色你希望它对所选图像生效。
根据以下代码是关注
setFinishedSelectedImage: withFinishedUnselectedImage:;
这在iOS 7中不再可用,我们可以使用
[yourCustomTabBarItem setSelectedImage:---];
但这也会影响此全局色调。
答案 6 :(得分:0)
对我来说,最好的方法是更改图像颜色。
func imageWithColor(_ color: UIColor) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(size, false, scale)
let context = UIGraphicsGetCurrentContext()!
context.translateBy(x: 0, y: size.height)
context.scaleBy(x: 1.0, y: -1.0)
context.setBlendMode(.normal)
let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
context.clip(to: rect, mask: cgImage!)
color.setFill()
context.fill(rect)
let newImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
newImage.accessibilityIdentifier = accessibilityIdentifier
return newImage
}
然后,您可以更新tabBarItem的属性,例如image和selectedImage:
func setupColorAttributes(to item: UITabBarItem) {
item.image = item.image?.imageWithColor(.white)?.withRenderingMode(.alwaysOriginal)
item.selectedImage = item.image?.imageWithColor(.highLight)?.withRenderingMode(.alwaysOriginal)
}