UINavigationBar高于View Controller的视图

时间:2018-05-24 17:07:36

标签: ios uinavigationcontroller uinavigationbar

我正在尝试在某个点增加导航控制器的导航栏。对于iOS 11,我设法做了那个设置navigationBar.prefersLargeTitles = true 但对于其他iOS版本,我正在手动执行

问题在于,当我尝试手动更改导航栏高度时,视图控制器的视图位于导航栏的扩展部分下。

这就是我的诀窍:

extension UINavigationController {

    func setupNavigationWithMenu(){
        let bounds = self.navigationBar.bounds
        let menuHeight: CGFloat = 50 //whatever height you want to add to the existing height
        let segmentedMenu = SegmentedMenu(frame: CGRect(x: 0, y: bounds.height, width: bounds.width, height: menuHeight))
        if #available(iOS 11.0, *) {
            self.navigationBar.prefersLargeTitles = true
        } else {

            let bounds = self.navigationBar.bounds
            self.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: bounds.height + menuHeight)

        }

        self.navigationBar.addSubview(segmentedMenu)

    }

}

我在这里打电话给设置:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController!.setupNavigationWithMenu()
}

如何调整视图控制器的视图以在导航栏后启动?

对于iOS 11,它的工作正常,其他视图在导航下

当它不是iOS 11时会发生这种情况 View Under the Navigation enter image description here

1 个答案:

答案 0 :(得分:0)

导航栏具有由导航控制器控制的固定高度。我们的想法是坚持下去,而不是试图改变它。

“大型游戏”方法仅适用于iOS 11,因为大型游戏是iOS 11的创新。