在UITabBarDelegate的tabBar(_:didSelect:)函数中,我尝试切换tabBarItem的图像。这适用于iOS 14,但当我使用iOS 11进行测试时,它不会更改图像。
我尝试包装在DispatchQueue.main.async {}中并调用tabBar.setNeedsDisplay()和tabBar.setNeedsLayout(),但这没有帮助。
func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
switch item.tag {
case 0:
if publishAudio == false {
item.image = UIImage(named: "mute_off")
} else {
item.image = UIImage(named: "mute_on")
}
default:
preconditionFailure("Unexpected item tag: \(item.tag)")
}
}发布于 2020-12-14 05:31:38
弄清楚了,在设置图像时,设置image和selectedImage。
func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
switch item.tag {
case 0:
if publishAudio == false {
item.image = UIImage(named: "mute_off")
item.selectedImage = UIImage(named: "mute_off")
} else {
item.image = UIImage(named: "mute_on")
item.selectedImage = UIImage(named: "mute_on")
}
default:
preconditionFailure("Unexpected item tag: \(item.tag)")
}
}发布于 2020-12-14 00:32:37
您可以使用每个viewController的UITabBar图像从情节提要中创建它,如下图所示:

发布于 2020-12-21 05:16:45
试试这个:
self.tabBarController?.tabBar.items![0].image = UIImage(named: "your image name")
// items![0] index of your tab bar item.items![0] means tabbar first item
self.tabBarController?.tabBar.items![0].selectedImage = UIImage(named: "your image name")https://stackoverflow.com/questions/65277942
复制相似问题