答案 0 :(得分:76)
然而,iPhone X上的显示器 145pt 高于4.7"显示,为内容产生大约20%的额外垂直空间。
有关详细信息,您可以通过Apple documents获取iphone X的HIG,并在here1和here2
中获取详细说明状态栏高度
之前的20pt,现在44pt
由于显示屏顶部的传感器,新状态栏分为两部分。如果您的UI正在使用该空间做一些特殊的事情(之前是20pt高,现在是44pt),因为它在iPhone X上会更高。确保它可以动态地改变高度。一个好处是,如果用户打电话或使用导航应用程序,高度将不会改变,这在以前的其他iPhone上就是这种情况。
<强>肖像强>
导航栏高度正常 88 且标题时间较长 140
<强>风景强>
答案 1 :(得分:25)
答案 2 :(得分:11)
您可以使用所包含视图控制器中safeAreaInsets
上的view
以编程方式获取导航栏的高度:
let navBarHeight = view.safeAreaInsets.top
这将说明它是否是一个大的标题导航栏,以及是否附加了搜索栏。
有关详细信息,请参阅safeAreaInsets
documentation。
答案 3 :(得分:8)
您可以使用导航栏的.frame属性来计算顶部栏区域的整体高度:
ObjC:
CGRect navbarFrame = self.navigationController.navigationBar.frame;
float topWidth = navbarFrame.size.width;
float topHeight = navbarFrame.size.height + navbarFrame.origin.y;
我认为这有点作弊,但添加导航栏的高度及其y原点似乎无论设备如何都能提供正确的总高度。
答案 4 :(得分:7)
你可以通过下一个方式获得它(Swift 3):
let barHeight = navigationController?.navigationBar.frame.maxY
要获得正确的值,请确保在设置prefersLargeTitles
navigationController?.navigationBar.prefersLargeTitles = false
答案 5 :(得分:4)
Apple Docs中没有规范
根据Geoff Hackworth其88
导航标题类型:
增加iOS 11中的导航栏
navigationController?.navigationBar.prefersLargeTitles = true
答案 6 :(得分:1)
如果您使用的是uiwindow,并且需要了解顶部栏的高度,则可以使用以下方法:
guard let keyWindow = UIApplication.shared.keyWindow else { return }
let navBarHeight = keyWindow.safeAreaInsets.top
print("navBarHeight:" , navBarHeight)
我从@Paolo's answer那里得到了主意
答案 7 :(得分:0)
如果您想知道哪里需要开始内容,请使用它
Resource<Company>