适配iPhone6P.md 2.23 KB

iPhone尺寸:

设备iPhone 对角线Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel)  

3GS       3.5-inch            320x480         @1x        320x480
4(s)      3.5-inch            320x480         @2x        640x960
5c        4-inch              320x568         @2x        640x1136
5(s)      4-inch              320x568         @2x        640x1136
6         4.7-inch            375x667         @2x        750x1334
6+        5.5-inch            414x736         @3x        (1242x2208->)1080x1920

适配须知:

原版设计图的约束数值都是按照iPhone6(4.7-inch)的设计给的,在项目中转换为iPhone5(4-inch)的标准实际使用的

方法1:

`#define LayOutForScaleIPhone6P(offsetForIPhone6) ([DeviceTools is5p5InchPhone] ? (1.294 * offsetForIPhone6) : LayOutForScale(offsetForIPhone6))`

适用环境:

在没有新的iPhone6P的设计图的情况下,项目内的UI约束都需要使用这个宏,参数是:(按照iPhone6给的约束计算出的iPhone5的标准)

例如:

例如:程序中有这样一行代码:
UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100 / 2 * 0.854, 100)];
适配后的代码是:
UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, LayOutForScaleIPhone6P(100 / 2 * 0.854), LayOutForScaleIPhone6P(100))];

方法名2:

`#define LayoutForFitIPhone6P(offsetForIPhone6,offsetForIPhone6P) ([DeviceTools is5p5InchPhone] ? offsetForIPhone6P : LayOutForScale(offsetForIPhone6))`

适用环境:

在有iPhone6P新设计图的情况下,需要使用这个宏,第一个参数是:(按照iPhone6给的约束计算出的iPhone5的标准),第二个参数是:(新的按照iPhone6P给的约束)

例如:

例如:程序中有这样一行代码:
UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100 / 2 * 0.854, 100)];
新设计图的约束是width = 50 ; height = 120;
适配后的代码是:
UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, LayoutForFitIPhone6P(100 / 2 * 0.854, 50), LayoutForFitIPhone6P(100, 120))];

有疑问?:

一起讨论吧
苏越鑫 381282202
suyuexin@boxfish.cn