2018年9月中詢開始Apple宣布了3款iPhone的新機(jī)型,分別是iPhoneXr,iPhoneXs和iPhoneXs Max,為了更好的用戶體驗(yàn),所以項(xiàng)目中需要同步進(jìn)行新機(jī)型的適配處理,于是研究并進(jìn)行了相應(yīng)的適配
首先對(duì)設(shè)備展示做判斷,通過網(wǎng)上的博客找到了判斷iPhone新機(jī)型的標(biāo)準(zhǔn),于是在KSDeviceDetector類中增加宏定義:
define kDeviceModelIPhoneXS @"iPhone11,2"
define kDeviceModelIPhoneXSMax @"iPhone11,4"
define kDeviceModelIPhoneXSMax_1 @"iPhone11,6"
define kDeviceModelIPhoneXR @"iPhone11,8"
項(xiàng)目中具體判斷代碼添加以下代碼:
else if ([deviceString isEqualToString:kDeviceModelIPhoneXSMax] ||
[deviceString isEqualToString:kDeviceModelIPhoneXSMax_1]) return @"iPhone XS Max";
else if ([deviceString isEqualToString:kDeviceModelIPhoneXS]) return @"iPhone XS";
else if ([deviceString isEqualToString:kDeviceModelIPhoneXR]) return @"iPhone XR";
當(dāng)然除此之外,更重要的是新機(jī)型進(jìn)行屏幕適配
考慮到之前適配iPhoneX的為分辨率:2436 * 1125
而iPhoneXr,iPhoneXs和iPhoneXs Max他們的分辨率分別是:
iPhoneXr的分辨率:1792 * 828
iPhoneXs 的分辨率: 2436 * 1125
iPhoneXs Max 的分辨率:2688 * 1242
對(duì)比發(fā)現(xiàn),iPhoneXs的屏幕尺寸和去年發(fā)布的iPhoneX是一樣的,所以今年不需要做特殊處理,只需對(duì)其他兩款機(jī)型做屏幕適配,更好的是因?yàn)轫?xiàng)目一直使用到了專門針對(duì)屏幕適配的KSScreenHelper類,所以不需要在每個(gè)界面進(jìn)行判斷改動(dòng),直接在KSScreenHelper類中增加代碼,一步即可:
(UIEdgeInsets)contentInsets {
CGRect statusBarRect = [UIApplication sharedApplication].statusBarFrame;
UIEdgeInsets insets = UIEdgeInsetsMake(statusBarRect.size.height, 0, 0, 0);
// special bottom insets for iPhoneX size (375 x 812)
if (CGSizeEqualToSize(MainScreenSize(), CGSizeMake(375, 812))) {
insets.bottom = 44;
}
// special bottom insets for iPhoneXR size
else if (CGSizeEqualToSize(CGSizeMake(828, 1792), [[UIScreen mainScreen] currentMode].size)) {
insets.bottom = 44;
}
// special bottom insets for iPhoneXR Max size
else if (CGSizeEqualToSize(CGSizeMake(1242, 2688), [[UIScreen mainScreen] currentMode].size)) {
insets.bottom = 44;
}
return insets;
}
最后在模擬器環(huán)境下進(jìn)行檢測(cè)與驗(yàn)證,確認(rèn)了經(jīng)過屏幕適配后的3款新機(jī)型運(yùn)行流暢,屏幕布局正確無誤。