适配Xs Max,Xr

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30211165/article/details/83187659

1启动图的适配
如果用的是LaunchScreen.storyboard就不需要考虑,如果是LaunchImage启动图那么需要准备正确的启动图,注意XR使用的@2x的图

机型 启动图及分辨率
4s 320x480 @2x
5,5s,se 320x568 @2x
6,6s,7,8 375x667 @2x
6,6s,7,8(plus) 414x736 @3x
x,xs 375x812 @3x
xs max 414x896 @3x
xr 414x896 @2x(2倍分辨率)

备注:Xcode10,模拟器运行发现xr的宽是375高是812
2屏幕的适配
分2种思路 第一种是根据屏幕适配 还有一种根据设备来判断
根据屏幕
1).我们可以根据原定机型的宽高系数来适配比如公司的模型机型是6那么适配如下
Iphone6ScaleWidth = [UIScreen mainScreen].bounds.size.width/375; Iphone6ScaleHeight = [UIScreen mainScreen].bounds.size.height/667;
然后控件的宽高乘以原模型的宽高系数这样也是可行的
2).根据宽或者高来确认机型来适配
这种做法比较麻烦需要坐判断
3)根据宽高比来适配
刘海的2:1。其他的1.7:1
根据设备来适配

**//判断是否是ipad
#define isPad ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
//判断iPhone4系列
#define kiPhone4 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhone5系列
#define kiPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhone6系列
#define kiPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iphone6+系列
#define kiPhone6Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhoneX
#define IS_IPHONE_X ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPHoneXr
#define IS_IPHONE_Xr ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828, 1792), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhoneXs
#define IS_IPHONE_Xs ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
//判断iPhoneXs Max
#define IS_IPHONE_Xs_Max ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2688), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)


适配x系列
适配x系列主要是对顶部导航栏+状态栏 和底部的距离适配 x系列的状态栏是44其他的是20
底部的其他为0 x系列底部要预留25像素
那么我们根据设备判断是否是x系列然后做相应操作

猜你喜欢

转载自blog.csdn.net/qq_30211165/article/details/83187659
XS
今日推荐