Попробуйте добавить этот код внутри viewDidLayoutSubviews()
, затем вместо установки размера и ширины imageView просто добавьте изображение как изображение в tabBarItem
.
Я не знаю, как называется вкладкаизображения, которые вы использовали, но для примера давайте назовем первое изображение внутри xcassests homeIcon
, второе изображение middleIcon
и последнее изображение settingsIcon
Это способ, которым я бы создал подкласс моего TabBarController, используя эти изображенияи другой код для центрирования изображения без заголовка изображения внутри viewDidLayoutSubviews()
.
class MyTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let homeVC = HomeController()
let navVCHome = UINavigationController(rootViewController: homeVC)
navVCHome.tabBarItem = UITabBarItem(title: nil, image: UIImage(named: "homeIcon"), tag: 0)
let middleVC = MiddleController()
let navVCMiddle = UINavigationController(rootViewController: middleVC)
navVCMiddle.tabBarItem = UITabBarItem(title: nil, image: UIImage(named: "middleIcon"), tag: 1)
let settingsVC = SettingsController()
let navVCSettings = UINavigationController(rootViewController: settingsVC)
navVCSettings.tabBarItem = UITabBarItem(title: nil, image: UIImage(named: "settingsIcon"), tag: 2)
viewControllers = [navVCHome, navVCMiddle, navVCSettings]
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
for tabBarItem in tabBar.items ?? [] {
tabBarItem.title = ""
tabBarItem.imageInsets = UIEdgeInsets(top: 6.0, left: 0.0, bottom: -6.0, right: 0.0 )
}
}
}