У меня есть UITabBarController
, к которому я применил несколько вставок, чтобы я мог расположить иконку и заголовок рядом
navController.tabBarItem.title = title.rawValue
navController.tabBarItem.image = image.resize(width: 30, height: 30).withRenderingMode(.alwaysTemplate)
Однако при нажатии на вкладку мой значок перемещается вправо или случайным образом смещается.
После нажатия на документы значок заметно смещается вправо и за пределы видимости.
Если я удаляю вставки, значок будет работать, как и ожидалось, однако, конечно, я не смогу использовать макет как требуется.
import UIKit
enum TabBarItem: String {
case questions = "Questions"
case documents = "Documents"
case profile = "Profile"
}
class MainTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
view.hasBackgroundGradient()
setupTabBar()
viewControllers = [
generateNavigationController(for: ChatController(), title: .questions, image: #imageLiteral(resourceName: "bot_icon"), hideNavbar: true),
generateNavigationController(for: DocumentsController(), title: .documents, image: #imageLiteral(resourceName: "document_icon"), hideNavbar: true),
generateNavigationController(for: ProfileController(), title: .profile, image: #imageLiteral(resourceName: "profile_icon"))
]
}
}
extension MainTabBarController {
fileprivate func setupTabBar() {
tabBar.barTintColor = .white
tabBar.isTranslucent = false
tabBar.unselectedItemTintColor = .black
tabBar.tintColor = UIColor.usingHex("1fb3b7")
}
fileprivate func generateNavigationController(for rootViewController: UIViewController, title: TabBarItem, image: UIImage, hideNavbar: Bool = false) -> UIViewController {
let navController = UINavigationController(rootViewController: rootViewController)
navController.isNavigationBarHidden = hideNavbar
if !hideNavbar {
navController.navigationBar.barTintColor = .white
navController.navigationBar.isTranslucent = false
}
navController.tabBarItem.titlePositionAdjustment = UIOffset(horizontal: -20, vertical: -20)
navController.tabBarItem.imageInsets = UIEdgeInsets(top: 3, left: 40, bottom: -3, right: -60)
navController.tabBarItem.title = title.rawValue
navController.tabBarItem.image = image.resize(width: 30, height: 30).withRenderingMode(.alwaysTemplate)
navController.tabBarItem.badgeValue = ""
return navController
}
}