gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 05:23:45 35 4
gpt4 key购买 nike

刚刚下载了 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)

这是截图,左边是ios11,右边是ios10,

enter image description here

最佳答案

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

(但是您也应该问自己为什么手动添加导航栏。通常没有理由不将 View Controller 包装在 UINavigationController 中 - 即使您不打算这样做进行任何实际的导航 - 只是为了获得导航栏及其所有自动管理。)

关于swift - ios 11 自定义导航栏位于状态栏下方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58387433/

35 4 0