iOS gets the height of the navigation bar

I am currently optimizing the code. Among them, the public methods related to obtaining the navigation bar have been improved.
It is entirely for better adaptation to different systems

The original method of obtaining the height of the mobile navigation bar:

// 屏幕宽度
#define kScreenWidth [UIScreen mainScreen].bounds.size.width
// 屏幕高度
#define kScreenHeight [UIScreen mainScreen].bounds.size.height
// 状态栏高度
#define kStatusBarHeight [UIApplication sharedApplication].statusBarFrame.size.height
// 导航栏高度
#define kNavigationHeight self.navigationController.navigationBar.frame.size.height
// 状态栏+导航栏总高度
#define KNavHeightAndStatusHeight  self.navigationController.navigationBar.frame.size.height+[[UIApplication sharedApplication] statusBarFrame].size.height
// 底部tabbar高度
#define KTabbarHight self.tabBarController.tabBar.frame.size.height  

After iOS13, it is recommended to use the following method to obtain.


Define the method name in the tool class file.h file

/** 顶部安全区高度 **/
+ (CGFloat)util_safeDistanceTop;
 
/** 底部安全区高度 **/
+ (CGFloat)util_safeDistanceBottom;
 
/** 顶部状态栏高度(包括安全区) **/
+ (CGFloat)util_statusBarHeight;
 
/** 导航栏高度 **/
+ (CGFloat)util_navigationBarHeight;
 
/** 状态栏+导航栏的高度 **/
+ (CGFloat)util_navigationFullHeight;
 
/** 底部导航栏高度 **/
+ (CGFloat)util_tabBarHeight;
 
/** 底部导航栏高度(包括安全区) **/
+ (CGFloat)util_tabBarFullHeight;

.m file

// 顶部安全区高度
+ (CGFloat)util_safeDistanceTop {
    
    
    if (@available(iOS 13.0, *)) {
    
    
        NSSet *set = [UIApplication sharedApplication].connectedScenes;
        UIWindowScene *windowScene = [set anyObject];
        UIWindow *window = windowScene.windows.firstObject;
        return window.safeAreaInsets.top;
    } else if (@available(iOS 11.0, *)) {
    
    
        UIWindow *window = [UIApplication sharedApplication].windows.firstObject;
        return window.safeAreaInsets.top;
    }
    return 0;
}
 
// 底部安全区高度
+ (CGFloat)util_safeDistanceBottom {
    
    
    if (@available(iOS 13.0, *)) {
    
    
        NSSet *set = [UIApplication sharedApplication].connectedScenes;
        UIWindowScene *windowScene = [set anyObject];
        UIWindow *window = windowScene.windows.firstObject;
        return window.safeAreaInsets.bottom;
    } else if (@available(iOS 11.0, *)) {
    
    
        UIWindow *window = [UIApplication sharedApplication].windows.firstObject;
        return window.safeAreaInsets.bottom;
    }
    return 0;
}
 
 
//顶部状态栏高度(包括安全区)
+ (CGFloat)util_statusBarHeight {
    
    
    if (@available(iOS 13.0, *)) {
    
    
        NSSet *set = [UIApplication sharedApplication].connectedScenes;
        UIWindowScene *windowScene = [set anyObject];
        UIStatusBarManager *statusBarManager = windowScene.statusBarManager;
        return statusBarManager.statusBarFrame.size.height;
    } else {
    
    
        return [UIApplication sharedApplication].statusBarFrame.size.height;
    }
}
 
// 导航栏高度
+ (CGFloat)util_navigationBarHeight {
    
    
    return 44.0f;
}
 
// 状态栏+导航栏的高度 Utils当前文件名
+ (CGFloat)util_navigationFullHeight {
    
    
    return [Utils util_statusBarHeight] + [Utils util_navigationBarHeight];
}
 
// 底部导航栏高度
+ (CGFloat)util_tabBarHeight {
    
    
    return 49.0f;
}
 
// 底部导航栏高度(包括安全区) Utils当前文件名
+ (CGFloat)util_tabBarFullHeight {
    
    
    return [Utils util_statusBarHeight] + [Utils util_safeDistanceBottom];
}

Guess you like

Origin blog.csdn.net/c1o2c3o4/article/details/128205918
Recommended