【问题标题】:UINavigationBar with Higher Height above View Controller's viewUINavigationBar 在视图控制器的视图上方具有更高的高度
【发布时间】:2018-05-25 01:14:20
【问题描述】:

我正在尝试在某个点增加导航控制器的导航栏。对于 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 时会发生的情况

【问题讨论】:

  • 不...我还没有在 iPhone X 上测试过...虽然 iPhone X 至少会有 iOS 11

标签: ios uinavigationcontroller uinavigationbar


【解决方案1】:

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

“大标题”方法仅适用于 iOS 11,因为大标题是 iOS 11 的一项创新。

【讨论】:

  • 我正在设法增加导航栏...问题是视图控制器的视图...您是说其他iOS不可能增加导航栏?
  • 我是说它颠覆了 Cocoa 的预期。导航控制器负责放置导航栏和视图控制器的视图,而您正在破坏它。
猜你喜欢
  • 1970-01-01
  • 2019-08-28
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 2019-05-26
  • 2015-09-21
  • 1970-01-01
  • 2021-11-16
相关资源
最近更新 更多