更改默认“未选择”UITabBarItem 图像颜色

Posted

技术标签:

【中文标题】更改默认“未选择”UITabBarItem 图像颜色【英文标题】:Change Default "Not Selected" UITabBarItem Image Color 【发布时间】:2015-06-05 10:40:24 【问题描述】:

我们如何改变UITabBarItem中图标的“未选中”或未高亮状态?

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

有什么想法吗?

【问题讨论】:

【参考方案1】:

如果您想更改 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.

【讨论】:

【参考方案2】:

可以单独使用“xcode”来完成。将两组重复的“图像”添加到“Assets.xcassets”。以不同的方式命名第二组图像,例如,将它们命名为“yourNameSelected”。为第一组(未选择的)图标设置“渲染为原始图像”属性:

为未选择的位置设置这些图像:

将“yourNameSelected”重复图像设置为选定图像,然后转到选项卡栏属性检查器并为所选选项卡颜色选择所需的图像色调。

如果你的目标是ios10以下,你需要导入两个状态的彩色图片,并渲染为原始图片。

【讨论】:

【参考方案3】:

在快速标签栏项目图标由它自己的图像呈现,所以你可以应用你自己的预设

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

【讨论】:

以上是关于更改默认“未选择”UITabBarItem 图像颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITabBarItem 上设置不同的未选择图像和文本颜色

如何快速更改标签栏未选择图标的颜色?

UITabBarItem 更改图像高度和宽度

更改 UITabBarItem 图像的颜色

UITabBarItem 图像为蓝色且未更改

在 iOS 9 中更改 UITabBarItem 色调颜色?