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

时间:2017-03-05 19:23:12

标签: ios swift uitabbarcontroller uicolor uitabbaritem

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

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

有没有什么方法可以在标签栏图标中保留颜色信息而不使其单色?它看起来好多了几千倍。

谢谢,

哈里什

1 个答案:

答案 0 :(得分:1)

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

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

此外,如果您正在使用资产目录(您应该使用),请注意,在资产设置中,您有渲染为设置,您可以将其设置为始终原始。 然后,您可以在使用图片时省略.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)创建的项目。
使用故事板时,您可以决定使用系统栏项目还是自定义项目。