UIViewController更改选项卡高度后进入选项卡下方

时间:2019-03-13 09:49:14

标签: ios swift uiviewcontroller uitabbarcontroller uitabbar

我正在使用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 

我得到的输出:

My Output

以下方法解决了该问题。但这是正确的方法吗?由于我在某些情况下需要隐藏tabBar。因此,我还需要处理其他几件事。

override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        self.view.frame.size.height = UIScreen.main.bounds.height - (self.tabBarController?.tabBar.frame.height)!
    }

0 个答案:

没有答案