iOS 适配全面屏iPhone X系列手机-OC版

一、如何知道手机是全面屏手机?

         网上有好多人使用获取手机型号的方式来判断,本人觉得这种方式没有问题,只是作为一名开发者,大家都知道苹果每年都会更新新的机型。大家肯定不希望在每次苹果发布新机型后去更新版本,目前我有两种判断方式:

1.获取状态栏的高度,全面屏手机的状态栏高度为44pt,非全面屏手机的状态栏高度为20pt

CGFloat statusBarheight = [UIApplication sharedApplication].statusBarFrame.size.height;
NSLog(@"%f",statusBarheight);

使用宏定义以下参数,用于屏幕适配处理

//状态栏高度
#define kStatusBarHeight [UIApplication sharedApplication].statusBarFrame.size.height
//导航栏高度
#define kNavigationHeight (kStatusBarHeight + 44)
//tabbar高度
#define kTabBarHeight (kStatusBarHeight == 44 ? 83 : 49)
//顶部的安全距离
#define kTopSafeAreaHeight (kStatusBarHeight - 20)
//底部的安全距离
#define kBottomSafeAreaHeight (kTabBarHeight - 49)

2.获取底部的底部的安全距离,全面屏手机为34,非全面屏手机为0

CGFloat bottomSafeAreaHeight = [UIApplication sharedApplication].delegate.window.safeAreaInsets.bottom;
NSLog(@"%.2f", bottomSafeAreaHeight);

使用宏定义以下参数,用于屏幕适配处理

//底部的安全距离
#define kBottomSafeAreaHeight [UIApplication sharedApplication].delegate.window.safeAreaInsets.bottom
//顶部的安全距离
#define kTopSafeAreaHeight (kBottomSafeAreaHeight == 0 ? 0 : 24)
//状态栏高度
#define kStatusBarHeight (kBottomSafeAreaHeight == 0 ? 20 : 44)
//导航栏高度
#define kNavigationHeight (kBottomSafeAreaHeight == 0 ? 64 : 88)
//tabbar高度
#define kTabBarHeight (kBottomSafeAreaHeight + 49)

 

 

 

你可能感兴趣的:(Objective-C)