UINavigationBar框架高度返回44.0但实际上是64.0

时间:2016-10-23 12:28:30

标签: ios swift xcode uinavigationbar uistoryboard

我在故事板中有一个未使用AutoLayout的UINavigationController。在状态栏可见的情况下,UINavigationBar的实际高度为64.0,而当我记录self.navigationBar.frame.size.height时,我得到44.0。如何获得UINavigationBar的实际高度?

我正在使用Xcode 7.3和故事板为iOS 6构建。

3 个答案:

答案 0 :(得分:6)

UINavigationBar的高度 44 。您获得 64 的原因是因为您的状态栏可见且高度 20

<强>更新
要计算高度,你可以:

let height = Double(UIApplication.shared.statusBarFrame.height) + Double(self.navigationController!.navigationBar.frame.height)

答案 1 :(得分:1)

不要使用魔术数字。使用视图控制器的topLayoutGuide.length来获得正确的高度。导航栏高度和状态栏高度可能会在运行时更改,因此请在viewDidLayoutSubviews中运行代码以始终使用正确的值。

答案 2 :(得分:0)

最干净的方法是只关心navigationBar的位置和高度,而不是假设它上面有状态栏。 (事实上​​,如果电话方向是风景,那么甚至不会有状态栏。 就这样做:

let height = Double(self.navigationController!.navigationBar.origin.y) + Double(self.navigationController!.navigationBar.frame.height)