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

Posted

技术标签:

【中文标题】设置多色标签栏图标而不是单色图标【英文标题】:Set multicolor tab bar icon instead of monochrome icon 【发布时间】:2017-03-05 19:23:11 【问题描述】:

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

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

有什么方法可以在标签栏图标中保留颜色信息而不使其成为单色?当它是彩色的时候,它看起来要好一千倍。

谢谢,

哈里什

【问题讨论】:

【参考方案1】:

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

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

另外,如果您正在使用资产目录(您应该这样做),请注意在您的资产设置中,您有一个 Render As 设置,您可以将其设置为 Always Original时间>。 然后,您可以在使用图像时省略.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)创建的项目。 使用情节提要时,您可以决定使用系统栏项目还是自定义项目。

【讨论】:

成功了!非常感谢!我希望我上面的代码行最终可以工作,因为修改某些类似的东西而不是创建一个全新的东西会很酷

以上是关于设置多色标签栏图标而不是单色图标的主要内容,如果未能解决你的问题,请参考以下文章

iOS 哪个是标签栏图标的默认 UIColor?

带有自定义颜色的标签栏

标签栏小图标

我的标签栏项目图标应该是啥尺寸?

iOS7标签栏自定义图标高度 - 高度减小直到图标变得不可见

如何更改ios7中非活动标签栏图标的颜色?