UITabBarItem图像颜色为灰色,而原始图像为白色

我使用以下代码为我的UITabBarItem创建图像

 self.tabBarItem.image = [UIImage imageNamed:@"tab_img.png"]; 

这个tab_img.png由黑色,白色和清晰的颜色组成。 但在应用程序中,黑白图像的所有部分都变为灰色。 我怎么能把这个灰色变成白色?

这是我用的图像

在此处输入图像描述

在iOS7中,如果你使用IB,你可以inheritanceUITabBarController,然后添加:

 + (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并添加初始化的代码。

设置选定和未选择的图像。

 [self.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"mehr_icon"] withFinishedUnselectedImage:[UIImage imageNamed:@"mehr_icon"]]; 

UITabBarItems的图像应该只是alpha通道! 但是,不透明部分仅显示为灰色(如果选择为蓝色)!

看看: http : //devinsheaven.com/creating-uitabbar-uitoolbar-icons-in-adobe-illustrator/

如果您正在使用图像资源,只需将图像的“渲染为”字段(选定和未选择的图像)设置为“原始图像”( 示例 )

然后在你的xib中设置Tab Bar项目中的“Image”和“Selected Image”字段( 示例 )

我曾经遇到过同样的问题,我只使用白色和alpha的图像,就像这个图像一样

我用self.tabBarItem.image = [UIImage imageNamed:@"Liste"];设置它self.tabBarItem.image = [UIImage imageNamed:@"Liste"];

Only Way是转到IB(界面构建器)并在View Controller中选择UITabBarItem并转到“文件检查器”向下滚动,您将看到Global Tint,您可以将其设置为无颜色或任何您想要的颜色对所选图像生效。

按照以下代码是关注的

 setFinishedSelectedImage: withFinishedUnselectedImage:; 

这在iOS 7中已不再可用,我们可以使用

 [yourCustomTabBarItem setSelectedImage:---]; 

但这也会影响这种全球色调。

对我来说,最好的方法是改变图像颜色。

  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) }