Я использую BubbleTabBar из Cuberto . До сих пор я проверял, что высота стержня изменяется с помощью следующих кодов
private var _barHeight: CGFloat = 74
open var barHeight: CGFloat {
get {
if #available(iOS 11.0, *) {
return _barHeight + view.safeAreaInsets.bottom
} else {
return _barHeight
}
}
set {
_barHeight = newValue
updateTabBarFrame()
}
}
private func updateTabBarFrame() {
var tabFrame = self.tabBar.frame
tabFrame.size.height = barHeight
tabFrame.origin.y = self.view.frame.size.height - barHeight
self.tabBar.frame = tabFrame
tabBar.setNeedsLayout()
}
open override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
updateTabBarFrame()
}
open override func viewSafeAreaInsetsDidChange() {
if #available(iOS 11.0, *) {
super.viewSafeAreaInsetsDidChange()
}
updateTabBarFrame()
}
Но после использования этого tabBar мои uiViewControllers переходят под tabBar. Кажется, что uiViewControllers действуют так, как будто они принимают высоту tabBar по умолчанию и корректируют себя соответствующим образом.
Попробовал с помощью следующих кодов на моем viewControllers
self.edgesForExtendedLayout = [.bottom, .top]
self.extendedLayoutIncludesOpaqueBars = true
Вывод, который я получил:
![My Output](https://i.stack.imgur.com/VLrOe.png)
Следующий подход решает проблему. Но так ли это? Как мне нужно скрыть tabBar в некоторых случаях. Так что для этого мне нужно разобраться еще с несколькими вещами.
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.view.frame.size.height = UIScreen.main.bounds.height - (self.tabBarController?.tabBar.frame.height)!
}