我在storyboard中有一个UINavigationController,它没有使用自动布局。随着状态栏可见,UINavigationBar的实际高度是64.0,然而当我记录self.navigationBar.frame.size.height
时,我得到44.0。如何获得uinavationbar的实际高度?
我使用的是Xcode 7.3和iOS 6版本的storyboard。
UINavigationBar
的高度为44。你得到64的原因是因为你的状态栏是可见的,它的高度为20。
更新:
要计算高度,可以:
let height = Double(UIApplication.shared.statusBarFrame.height) + Double(self.navigationController!.navigationBar.frame.height)
不要使用幻数。使用视图控制器的topLayoutGuide.length
来获得正确的高度。导航栏的高度和状态栏的高度可以在运行时改变,所以运行viewDidLayoutSubviews
中的代码总是使用正确的值。
最干净的方法是只关心navigationBar的位置和高度,而不假设它上面有一个状态栏。(事实上,如果手机的方向是横向的,甚至不会有状态栏。只需这样做:
let height = Double(self.navigationController!.navigationBar.origin.y) + Double(self.navigationController!.navigationBar.frame.height)