UIViewController Переходит под панель вкладок после изменения высоты панели вкладок - PullRequest
0 голосов
/ 13 марта 2019

Я использую 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

Следующий подход решает проблему. Но так ли это? Как мне нужно скрыть tabBar в некоторых случаях. Так что для этого мне нужно разобраться еще с несколькими вещами.

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