刚刚下载了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,
最佳答案
您的代码总是错误的。您不应该自己设置手动添加的导航栏的高度,也不应该将其放置在 View 的顶部。您应该将导航栏的顶部固定到状态栏的底部(例如,安全区域的顶部),并为其指定一个委托(delegate),以便可以使用UIBarPositioningDelegate机制将其位置设置为.topAttached
,这将导致它正确拉伸(stretch)到屏幕顶部。
(但您也应该问自己,为什么要手动添加导航栏。通常没有理由不将 View Controller 包装在UINavigationController中,即使您不打算进行任何实际的导航,也只是为了获得导航而已。酒吧,并具有所有自动管理功能。)
关于swift - iOS 11自定义导航栏进入状态栏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46326554/