title: UI组件选择历程
date: 2019-04-20 17:05:41
categories:
[toc]
手机机型 (iPhone) | 屏幕尺寸 (inch) | 逻辑分辨率 (pt) | 设备分辨率 (px) | 缩放因子 (Scale Factor) | |
---|---|---|---|---|---|
3G(s) | 3.5 | 320x480 | 320x480 | @1x | |
4(s) | 3.5 | 320x480 | 640x960 | @2x | |
5(s/se) | 4 | 320x568 | 640x1136 | @2x | |
6(s)/7/8 | 4.7 | 375x667 | 750x1334 | @2x | |
6(s)/7/8 Plus | 5.5 | 414x736 | 1242x2208 | @3x | |
X/Xs /11 Pro | 5.8 | 375x812 | 1125x2436 | @3x | |
Xr /11\ | 6.1 | 6.1 | 414x896 | 828×1792 | @2x |
Xs Max /11 Pro Max | 6.5 | 414x896 | 1242×2688 | @3x | |
12 mini | 5.4 | 360x780 | 1080x2340 | @3x | |
12/12 Pro | 6.1 | 390x844 | 1170x2532 | @3x | |
12 Pro Max | 6.7 | 428x926 | 1284x2778 | @3x | |
13 mini | 5.4 | 360x780 | 1080x2340 | @3x | |
13/13 Pro | 6.1 | 390x844 | 1170x2532 | @3x | |
13 Pro Max | 6.7 | 428x926 | 1284x2778 | @3x |
iPhone X系列随着机型增多,屏幕尺寸也发生了改变,安全距离也不同。竖屏状态下有44、48、47等(可能还有其他数值);横竖屏切换时也不相同:横屏时左右的安全距离相同,由原来竖屏下底部安全距离34改为与顶部安全距离相同。即横屏时左右安全距离相同,都为竖屏下顶部安全距离。
适配方案:如果项目中带SceneDelegate文件可添加以下代码,不带该文件的项目可去除iOS13的判断。
+ (UIEdgeInsets)getIphoneSafeInsets {
UIEdgeInsets safeInsets = UIEdgeInsetsMake(20, 0, 0, 0);
if (@available(iOS 11.0, *)) {
if (@available(iOS 13.0, *)) {
safeInsets = [UIApplication sharedApplication].windows.firstObject.safeAreaInsets;
}
else {
safeInsets = [[UIApplication sharedApplication] delegate].window.safeAreaInsets;
}
}
if (safeInsets.top < 20) {
safeInsets.top = 20;
}
return safeInsets;
}