В моей функции tabBar(_:didSelect:) UITabBarDelegate я пытаюсь переключить изображение 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)")
}
}
вы можете сделать это из раскадровки, используя изображение UITabBar для каждого viewController, например изображение:
Разобрался, при установке изображения поставил 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)")
}
}
попробуй это:
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")