我正在使用Cuberto中的BubbleTabBar。到目前为止,我使用以下代码更改了条形高度
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
我得到的输出:
以下方法解决了该问题。但这是正确的方法吗?由于我在某些情况下需要隐藏tabBar。因此,我还需要处理其他几件事。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.view.frame.size.height = UIScreen.main.bounds.height - (self.tabBarController?.tabBar.frame.height)!
}