如何获取导航栏的高度

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 你在哪里调用你的代码? selfUINavigationController 中吗? 可能就是这样。我认为 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)

【讨论】:

以上是关于如何获取导航栏的高度的主要内容,如果未能解决你的问题,请参考以下文章

如何获取Android手机底部导航栏的高度

如何以编程方式获取 Android 导航栏的高度和宽度?

以编程方式获取导航栏的高度

iOS 获取导航栏和状态栏的高度

如何在引导程序中获取窗口的高度和宽度

ios 获取导航栏和状态栏高度,针对iPhoneX