我在故事板中有一个未使用AutoLayout的UINavigationController。在状态栏可见的情况下,UINavigationBar的实际高度为64.0,而当我记录self.navigationBar.frame.size.height
时,我得到44.0。如何获得UINavigationBar的实际高度?
我正在使用Xcode 7.3和故事板为iOS 6构建。
答案 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)