设置多色标签栏图标而不是单色图标

Set multicolor tab bar icon instead of monochrome icon

我需要一种方法来制作多色标签栏图标,但出于某种原因,iOS 一直以单色方式绘制图标。

我尝试了各种方法,例如在我的第一个视图控制器的 viewDidLoad 中包含这行代码:tabBarItem.image = #imageLiteral(resourceName:"routineIcon").withRenderingMode(.alwaysOriginal),但我没有成功。

有什么方法可以保留标签栏图标中的颜色信息而不使其变成单色?五颜六色的时候好看一千倍。

谢谢,

哈里什

您需要创建一个新的 UITabBarItem 并将其分配给视图控制器的 tabBarItem 属性。

// In viewDidLoad()
self.tabBarItem = UITabBarItem(title: "Hello world!", image: #imageLiteral(resourceName: "routineIcon").withRenderingMode(.alwaysOriginal), tag: 0)

此外,如果您正在使用资产目录(您应该使用),请注意在资产设置中您有一个 Render As 设置,您可以将其设置为 始终原创。 然后,您可以在使用图像时省略 .withRenderingMode(.alwaysOriginal)

// In viewDidLoad()
self.tabBarItem = UITabBarItem(title: "Hello world!", image: #imageLiteral(resourceName: "routineIcon"), tag: 0)

还有一个初始化程序可以选择一张图片

// In viewDidLoad()
self.tabBarItem = UITabBarItem(title: "Hello world!", image: #imageLiteral(resourceName: "routineIcon"), selectedImage: #imageLiteral(resourceName: "routineIconSelected"))

注意:一般来说,修改系统 UIBarItem 对象(UITabBarItem 用于选项卡栏,UIBarButtonItem 用于导航栏或工具栏)通常不起作用,您需要创建一个新的。
系统栏项目是使用 init(tabBarSystemItem:tag:)(对于 UITabBarItem)或 init(barButtonSystemItem:target:action:)(对于 UIBarButtonItem)创建的项目。
使用故事板时,您可以决定使用系统栏项目还是自定义栏项目。