ios 11 自定义导航栏位于状态栏下方

2024-01-28

刚刚下载了 xcode 9,我遇到了这个奇怪的问题,在 ios 11 上,我的自定义导航栏似乎只有一半大小,位于状态栏下方,在 ios 10 上工作正常。

所以这是我的代码

let newNavbar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 64))
let navItem = UINavigationItem()

//create and assign the items

newNavbar.setItems([navItem], animated: false)
view.addSubview(newNavbar)

这是截图,左边是ios 11,右边是ios10,


你的代码总是错误的。您不应自行设置手动添加的导航栏的高度或将其放置在视图的顶部。您应该将导航栏的顶部固定到状态栏的底部(例如安全区域的顶部)并给它一个委托,以便您可以使用 UIBarPositioningDelegate 机制将其位置设置为.topAttached,这将使其正确拉伸到屏幕顶部。

(但你也应该问自己why您正在手动添加导航栏。通常没有理由不将视图控制器包装在 UINavigationController 中 - 即使您不打算进行任何实际导航 - 只是为了获取导航栏及其所有自动管理。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ios 11 自定义导航栏位于状态栏下方 的相关文章

随机推荐