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