简单方法适配IphoneXS Iphone XR IphoneXS MAX

这次苹果一口气出了三款新设备,又要迎来了一波适配,首先来看下设备的相关参数:

型号屏幕尺寸inch)屏幕对角线(屏幕以外的边宽度不算)1 inch = 2.54cm = 25.4mm 逻辑分辨率(point)(pt)ios开发单位,即point,绝对长度,1pt=1/72英寸。

逻辑分辨率  宽高比

亲测用模拟器测的UIScreen的scale与nativeScale与缩放因子相等缩放因子(scale factorpoint = x*x pixeldpr(设备像素比,1px = (dpr)^2 * 1dp;设备像素比与ppi相关,一般是ppi/160的整数倍) 物理分辨率(像素)(pixel)(px)渲染分辨率像素密度沿着对角线,每英寸所拥有的像素数目(PPI
iPhone3GS3.5 320 * 4801.50 @1x1point = 1pixel1.0 320 * 480 163
iPhone4/4s3.5 320 * 4801.50 @2x1point = 2*2pixel2.02倍屏/Retina屏640 * 960 326
iPhone5/5s4 320 * 5681.78 @2x1point = 2*2pixel2.0 640 * 1136 326
iPhone6/6s4.7 375 * 6671.78 @2x1point = 2*2pixel2.0 750 * 1334 326
iPhone6Plus/6s Plus5.5 414 * 7361.78 @3x1point = 3*3pixel2.53倍屏/RetinaHD屏1242 * 2208 401
Iphone X5.8四者是圆角所以对角线比左侧值稍小些375 * 8122.17@3x6.501point = 6.5*6.5pixel2.9 2436 * 1125 458
iphone XS5.8 375 * 8122.17@3x6.501point = 6.5*6.5pixel2.9 2436 * 1125 458
iphone XR6.1 414 * 8962.16@2x4.331point = 4.33*4.33pixel2.0 1792 * 828 326
iphone XS MAX6.5 414 * 8962.16@3x6.491point = 6.49*6.49pixel2.9 2688 * 1242 458
            决定屏幕清晰度的值-像素密度
             

先分析下数据:如果做适配,我们主要关注IphoneX以后出的设备的逻辑分辨率可以看出,X与XS的逻辑分辨率一致,而XR与MAX是逻辑分辨率一致;我们再来看,X与XS的高宽比812 / 375 = 2.17,以及XR及MAX的高宽比896 / 414 = 2.18。而我们的工程之前肯定都适配过X了,所以,适配XR与MAX就so easy了,而且这四种设备都是只支持面容ID而不支持TOUchID的,只要把IphoneX的宏定义对IphoneX的判断或上XR与MAX就行了。以前我们工程里的宏定义如下:

#define IS_IPHONEX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)

只要改成:

#define IS_IPHONEX    ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? ((CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size))||(SCREEN_WIDTH == 414 && SCREEN_HEIGHT == 896)) : NO)

即可。

如果你的项目刚创建不就很easy的情况,强烈建议对整个工程的baseVC做处理,即:在baseVC的View上添加一个UIScrollView,在此SCRollVIew上再添加一个view做所有子控制器的父view,这样,即使以后出现其他宽高比的设备,就不用单独做适配了。

还是如果你的项目刚创建不就很easy的情况,建议对cgrectMake结构体做文章,让你的控件的宽和高按你基准设计图和屏幕的宽高比去变化,这也算是一劳永逸的操作。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值