默认导航栏高度ios

Evg*_*ban 2 uinavigationcontroller ios

在我的一个控制器中我使用自定义工具栏,我想在ios中获得默认工具栏(导航栏)的高度.我用过宏#define NAVBAR_HEIGHT self.navigationController.navigationBar.frame.size.height.

但是,当控制器没有嵌入导航堆栈时,宏返回零.

我不想使用44的常量,因为它可能在其他Apple设备上有所不同.

对于标签栏,我使用:

+(CGFloat)getTabBarHeight{

    UITabBarController *tabBarController = [UITabBarController new];
    CGFloat tabBarHeight = tabBarController.tabBar.frame.size.height;
    return tabBarHeight;
}
Run Code Online (Sandbox Code Playgroud)

有没有这样的片段,所以我可以返回导航控制器工具栏的值?

Dav*_*røm 11

我不确定Objective C - 但是在Swift 3/4中你可以做到

func getNavBarHeight() -> CGFloat {
    return self.navigationController?.navigationBar.frame.size.height
}
Run Code Online (Sandbox Code Playgroud)

这要求您将视图控制器嵌入到UINavigationController中.如果你没有这个,你可以这样做:

func getNavBarHeight() -> CGFloat {
    let nav = UINavigationController()
    return nav.navigationBar.frame.size.height
}
Run Code Online (Sandbox Code Playgroud)