更改默认 "Not Selected" UITabBarItem 图像颜色

Change Default "Not Selected" UITabBarItem Image Color

我们如何更改 "Not Selected" 或 UITabBarItem 中图标的非高亮状态?

我尝试设置 UITabBarItem.appearance().setTitleTextAttributes(:) 但它只会更改文本颜色。

有什么想法吗?

如果您想更改 iOS 7 及更高版本中的默认值,您必须实际使用不同的图标(使用您希望未选中的选项卡具有的颜色)并设置文本的颜色。您可以应用此调整,而不是创建两组图标:

// set the selected colors
[self.tabBar setTintColor:[UIColor whiteColor]];
[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], NSForegroundColorAttributeName, nil] forState:UIControlStateSelected];


UIColor * unselectedColor = [UIColor colorWithRed:184/255.0f green:224/255.0f blue:242/255.0f alpha:1.0f];

// set color of unselected text
[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:unselectedColor, NSForegroundColorAttributeName, nil]
                                     forState:UIControlStateNormal];

// generate a tinted unselected image based on image passed via the storyboard
for(UITabBarItem *item in self.tabBar.items) {
   // use the UIImage category code for the imageWithColor: method
   item.image = [[item.selectedImage imageWithColor:unselectedColor] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}

Source.

在 swift 选项卡栏项目图标中以其自己的图像显示,因此您可以应用自己的预设

var myImage = UIImage(named: "someImageName")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)
myImageView.tintColor = UIColor.redColor()
myImageView.image = myImage

单独使用'xcode'即可完成。将两组重复的 'images' 添加到 'Assets.xcassets'。将第二组图像命名为不同的名称,例如,将它们命名为'yourNameSelected'。设置 'Render As Original Image' 属性 为第一组(unselected)图标:

将这些图像设置为未selected 位置:

将 'yourNameSelected' 重复图像设置为选定图像,然后转到选项卡栏属性检查器和 select 您需要的 select 选项卡颜色所需的图像色调。

如果您的目标低于 ios10,您需要为两个状态导入彩色图像并将它们渲染为原始图像。