如何获取导航栏的高度
Posted
技术标签:
【中文标题】如何获取导航栏的高度【英文标题】:How to get the height of the Navigation bar 【发布时间】:2014-05-30 21:57:45 【问题描述】:我正在开发我的第一个 iPhone 应用程序。我对ios很陌生。我正在尝试使用viewDidLoad
方法下方的代码获取 UI 导航栏的高度
float navBarHeight = self.navigationController.navigationBar.frame.size.height;
但是 navBarHeight 返回 0。不知道为什么会这样。
【问题讨论】:
Programmatically get height of navigation bar 的可能重复项 如果您使用的是 iOS 6 或更高版本(即支持自动布局的系统),您可以尝试[navigationBar intrinsicContentSize].height
。
你在哪里调用你的代码? self
在 UINavigationController
中吗?
可能就是这样。我认为 Self 在 UIView 中,而不是在 UINavigation Controller 中。当我回到我的车站时,我需要再次检查。
它可能是自定义 UIView 而不是 UINavigationController.Some 其他地方隐藏导航栏
【参考方案1】:
可能是您使用自定义 UIView 进行导航或您在代码中隐藏 NavigationBar,即为什么它显示高度为 0。如果您在 viewWillAppear 中设置以下代码,您将获得 NavigationBar 的高度。
[self.navigationController setNavigationBarHidden:NO];
【讨论】:
【参考方案2】:试试这个扩展(考虑 iPhone-X)
extension UIViewController
/**
* Height of status bar + navigation bar (if navigation bar exist)
*/
var topbarHeight: CGFloat
return UIApplication.shared.statusBarFrame.size.height +
(self.navigationController?.navigationBar.frame.height ?? 0.0)
【讨论】:
【参考方案3】:试试:
print(self.navigationController?.navigationBar.frame.height)
【讨论】:
以上是关于如何获取导航栏的高度的主要内容,如果未能解决你的问题,请参考以下文章