iPhoneX适配

一. iPhone手机各版本尺寸

机型 发布时的系统 屏幕尺寸 比例 pt 像素
iPhone4 iOS 4 3.5英寸 3:2 320*480pt 960X640
iPhone4S iOS 5 3.5英寸 3:2 320*480pt 960X640
iPhone5 iOS 6 4英寸 16:9 320*568pt 1136X640
iPhone5C/5S iOS 7 4英寸 16:9 320*568pt 1136X640
iPhone6 iOS 8 4.7英寸 16:9 375*667pt 1334X750
iPhone6Plus iOS 8 5.5英寸 16:9 414*736pt 1920X1080
iPhone6S iOS 9 4.7英寸 16:9 375*667pt 1334X750
iPhone6SPlus iOS 9 5.5英寸 16:9 414*736pt 1920X1080
iPhoneSE iOS 9 4英寸 16:9 320*568pt 1136X640
iPhone7 iOS 10 4.7英寸 16:9 375*667pt 1334X750
iPhone7Plus iOS 10 5.5英寸 16:9 414*736pt 1920X1080
iPhone8 iOS 11 4.7英寸 16:9 375*667pt 1334X750
iPhone8Plus iOS 11 5.5英寸 16:9 414*736pt 1920X1080
iPhoneX iOS 11 5.8英寸 18:9 375*812pt 2436X1125
iPhoneXs iOS 12 5.8英寸 18:9 375*812pt 2436X1125
iPhoneXr iOS 12 6.1英寸 18:9 414*896pt 1792X828
iPhoneXs Max iOS 12 6.5英寸 18:9 414*896pt 2688X1242

二. iPhoneX手机具体尺寸大小

iPhoneX手机具体尺寸

三. iPhone X尺寸问题

  1. 高度增加了145pt,变成812pt.
  2. 屏幕圆角显示,注意至少留10pt边距。
  3. 状态栏高度由20pt变成44pt,留意这个距离就能避开“刘海”的尴尬,相应的导航栏以上变化64—>88。
  4. 底部工具栏需要为home indicator留出34pt边距。
  5. 物理分辨率为1125px * 2436px
    • 非iPhone X :
      StatusBar高20px,NavigationBar高44px,底部TabBar高49px
    • iPhone X:
      StatusBar高44px,NavigationBar高44px,底部TabBar高83px

四. 适配用到的宏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// status bar height.

#define kStatusBarHeight (IS_iPhoneX ? 44.f : 20.f)

// Navigation bar height.

#define kNavigationBarHeight 44.f

// Tabbar height.

#define kTabbarHeight (IS_iPhoneX ? (49.f+34.f) : 49.f)

// Tabbar safe bottom margin.

#define kTabbarSafeBottomMargin (IS_iPhoneX ? 34.f : 0.f)

// Status bar & navigation bar height.

#define kStatusBarAndNavigationBarHeight (IS_iPhoneX ? 88.f : 64.f)

//判断是否iPhone X

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

五. 判断iPhone设备型号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#import <sys/utsname.h>

+ (NSString *)deviceType
{
struct utsname systemInfo;
uname(&systemInfo);
NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];

//------------------------------iPhone---------------------------
if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 2G";
if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";
if ([platform isEqualToString:@"iPhone3,1"] ||
[platform isEqualToString:@"iPhone3,2"] ||
[platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4";
if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
if ([platform isEqualToString:@"iPhone5,1"] ||
[platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5";
if ([platform isEqualToString:@"iPhone5,3"] ||
[platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c";
if ([platform isEqualToString:@"iPhone6,1"] ||
[platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s";
if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";
if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
if ([platform isEqualToString:@"iPhone8,4"]) return @"iPhone SE";
if ([platform isEqualToString:@"iPhone9,1"] ||
[platform isEqualToString:@"iPhone9,3"]) return @"iPhone 7";
if ([platform isEqualToString:@"iPhone9,2"] ||
[platform isEqualToString:@"iPhone9,4"]) return @"iPhone 7 Plus";
if ([platform isEqualToString:@"iPhone10,1"] ||
[platform isEqualToString:@"iPhone10,4"]) return @"iPhone 8";
if ([platform isEqualToString:@"iPhone10,2"] ||
[platform isEqualToString:@"iPhone10,5"]) return @"iPhone 8 Plus";
if ([platform isEqualToString:@"iPhone10,3"] ||
[platform isEqualToString:@"iPhone10,6"]) return @"iPhone X";

//------------------------------iPad--------------------------
if ([platform isEqualToString:@"iPad1,1"]) return @"iPad";
if ([platform isEqualToString:@"iPad2,1"] ||
[platform isEqualToString:@"iPad2,2"] ||
[platform isEqualToString:@"iPad2,3"] ||
[platform isEqualToString:@"iPad2,4"]) return @"iPad 2";
if ([platform isEqualToString:@"iPad3,1"] ||
[platform isEqualToString:@"iPad3,2"] ||
[platform isEqualToString:@"iPad3,3"]) return @"iPad 3";
if ([platform isEqualToString:@"iPad3,4"] ||
[platform isEqualToString:@"iPad3,5"] ||
[platform isEqualToString:@"iPad3,6"]) return @"iPad 4";
if ([platform isEqualToString:@"iPad4,1"] ||
[platform isEqualToString:@"iPad4,2"] ||
[platform isEqualToString:@"iPad4,3"]) return @"iPad Air";
if ([platform isEqualToString:@"iPad5,3"] ||
[platform isEqualToString:@"iPad5,4"]) return @"iPad Air 2";
if ([platform isEqualToString:@"iPad6,3"] ||
[platform isEqualToString:@"iPad6,4"]) return @"iPad Pro 9.7-inch";
if ([platform isEqualToString:@"iPad6,7"] ||
[platform isEqualToString:@"iPad6,8"]) return @"iPad Pro 12.9-inch";
if ([platform isEqualToString:@"iPad6,11"] ||
[platform isEqualToString:@"iPad6,12"]) return @"iPad 5";
if ([platform isEqualToString:@"iPad7,1"] ||
[platform isEqualToString:@"iPad7,2"]) return @"iPad Pro 12.9-inch 2";
if ([platform isEqualToString:@"iPad7,3"] ||
[platform isEqualToString:@"iPad7,4"]) return @"iPad Pro 10.5-inch";

//------------------------------iPad Mini-----------------------
if ([platform isEqualToString:@"iPad2,5"] ||
[platform isEqualToString:@"iPad2,6"] ||
[platform isEqualToString:@"iPad2,7"]) return @"iPad mini";
if ([platform isEqualToString:@"iPad4,4"] ||
[platform isEqualToString:@"iPad4,5"] ||
[platform isEqualToString:@"iPad4,6"]) return @"iPad mini 2";
if ([platform isEqualToString:@"iPad4,7"] ||
[platform isEqualToString:@"iPad4,8"] ||
[platform isEqualToString:@"iPad4,9"]) return @"iPad mini 3";
if ([platform isEqualToString:@"iPad5,1"] ||
[platform isEqualToString:@"iPad5,2"]) return @"iPad mini 4";

//------------------------------iTouch------------------------
if ([platform isEqualToString:@"iPod1,1"]) return @"iTouch";
if ([platform isEqualToString:@"iPod2,1"]) return @"iTouch2";
if ([platform isEqualToString:@"iPod3,1"]) return @"iTouch3";
if ([platform isEqualToString:@"iPod4,1"]) return @"iTouch4";
if ([platform isEqualToString:@"iPod5,1"]) return @"iTouch5";
if ([platform isEqualToString:@"iPod7,1"]) return @"iTouch6";

//------------------------------Samulitor-------------------------------------
if ([platform isEqualToString:@"i386"] ||
[platform isEqualToString:@"x86_64"]) return @"iPhone Simulator";

return @"Unknown";
}
------ 本文结束------
0%