快速適配先說(shuō)結(jié)論韩肝,找設(shè)計(jì)師要2張啟動(dòng)圖:
iPhone XR:828px x 1792px
iPhone XS Max: 1242px x 2688px
代碼中使用了屏幕size判斷是否是iPhone X的需要修改,請(qǐng)翻到最后缠沈。
LaunchImage中只有iPhone X/iPhone XS
XCode GM Bug?
項(xiàng)目中使用LaunchImage來(lái)做啟動(dòng)圖层玲,那么有可能在XCode GM的LaunchImage中會(huì)出現(xiàn)只有iPhone X/iPhone XS啟動(dòng)圖界轩,并且iOS 8.0 and Later
沒(méi)有被選中,并且沒(méi)有iPhone XR/iPhone XS Max玩荠,需要手動(dòng)選擇一下iOS 8.0 and Later
漆腌,才會(huì)出現(xiàn)iPhone XR/iPhone XS Max啟動(dòng)圖。 這可能是XCode GM中的一個(gè)Bug阶冈。
XCode9 LaunchImage
<figure>[圖片上傳失敗...(image-236319-1539309851805)]
<figcaption></figcaption>
</figure>
XCode10 GM LaunchImage iOS 8.0 and Later
沒(méi)有被選中
<figure>[圖片上傳失敗...(image-4f7273-1539309851805)]
<figcaption></figcaption>
</figure>
XCode10 GM LaunchImage iOS 8.0 and Later
手動(dòng)選中才出現(xiàn) iPhone XR/iPhone XS Max
<figure>[圖片上傳失敗...(image-c358a5-1539309851805)]
<figcaption></figcaption>
</figure>
iPhone XR / XS Max 對(duì)老版本兼容請(qǐng)求
如果沒(méi)有設(shè)置iPhone XR/iPhone XS Max啟動(dòng)圖但設(shè)置了iPhone X的啟動(dòng)圖闷尿,iPhone XR / XS Max默認(rèn)會(huì)走iPhone X 的尺寸375ptx812pt,會(huì)對(duì)內(nèi)容近乎于等比拉伸放到iPhone XR / XS Max屏幕內(nèi)女坑,如下圖:
<figure>[圖片上傳失敗...(image-d42e95-1539309851805)]
<figcaption></figcaption>
</figure>
這里為什么說(shuō)是近乎于等比拉伸: iPhone X 高寬比:812/375 = 2.16533333 iPhone XR 和 iPhone XS Max 高寬比:896/414 = 2.16425121
iPhone XR / XS Max 屏幕尺寸
<figure>[圖片上傳失敗...(image-61f2ae-1539309851805)]
<figcaption></figcaption>
</figure>
型號(hào) | 邏輯尺寸 | 系數(shù) | 分辨率 |
---|---|---|---|
iPhone XR | 414pt x 896pt | @2 | 828px x 1792px |
iPhone XS Max | 414pt x 896pt | @3 | 1242px x 2688px |
當(dāng)時(shí)看發(fā)布會(huì)覺(jué)得XR 828px的分辨率有點(diǎn)奇怪填具,現(xiàn)在看來(lái)并不是蘋(píng)果不想做720或1080,而是有照顧開(kāi)發(fā)工程師的目的堂飞。 XR 和 XS Max 在邏輯大小上非常統(tǒng)一2x灌旧,3x就夠了,也不用做其他的切圖绰筛。
所以現(xiàn)在只是需要設(shè)計(jì)師給2張效果圖:
iPhone XR:828px x 1792px
iPhone XS Max: 1242px x 2688px
Tips
1. 代碼中判斷是否是iPhone X時(shí)需要注意
如果你以前是使用設(shè)備尺寸來(lái)判斷iPhone X那就需要修改了枢泰,判斷iPhone X主要是因?yàn)閯⒑5脑蚩赡芤鲂┨厥馓幚怼hb于iPhone X/XS/XR/XS Max底部都會(huì)有安全距離铝噩,所以可以利用safeAreaInsets.bottom > 0.0
來(lái)判斷是否是iPhone X/XS/XR/XS Max衡蚂。
safeAreaInsets支持iOS11及以后。
static inline BOOL isIPhoneXSeries() {
BOOL iPhoneXSeries = NO;
if (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPhone) {
return iPhoneXSeries;
}
if (@available(iOS 11.0, *)) {
UIWindow *mainWindow = [[[UIApplication sharedApplication] delegate] window];
if (mainWindow.safeAreaInsets.bottom > 0.0) {
iPhoneXSeries = YES;
}
}
return iPhoneXSeries;
}
作者:Shanesun
鏈接:https://juejin.im/post/5b9a4b62e51d450e6f2e255b
來(lái)源:掘金
著作權(quán)歸作者所有骏庸。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)毛甲,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。