我需要一种方法来获得多色标签栏图标,但出于某种原因,iOS会以单色方式绘制图标。
我尝试了各种方法,例如在我的第一个视图控制器的tabBarItem.image = #imageLiteral(resourceName:"routineIcon").withRenderingMode(.alwaysOriginal)
中包含这行代码:viewDidLoad
,但我没有运气。
有没有什么方法可以在标签栏图标中保留颜色信息而不使其单色?它看起来好多了几千倍。
谢谢,
哈里什
答案 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
)创建的项目。
使用故事板时,您可以决定使用系统栏项目还是自定义项目。