適配iPhone XR/iPhone XS Max

快速適配先說結論,找設計師要2張啓動圖:
iPhone XR:828px x 1792px
iPhone XS Max: 1242px x 2688px安全

代碼中使用了屏幕size判斷是不是iPhone X的須要修改,請翻到最後。app

2018年10月22日更新,整理最新的資料

iPhone全部設備的尺寸和分辨率iphone

LaunchImage中只有iPhone X/iPhone XS

XCode GM Bug?ide

項目中使用LaunchImage來作啓動圖,那麼有可能在XCode GM的LaunchImage中會出現只有iPhone X/iPhone XS啓動圖,而且iOS 8.0 and Later 沒有被選中,而且沒有iPhone XR/iPhone XS Max,須要手動選擇一下iOS 8.0 and Later,纔會出現iPhone XR/iPhone XS Max啓動圖。 這多是XCode GM中的一個Bug。ui

XCode9 LaunchImagespa

XCode10 GM LaunchImage iOS 8.0 and Later 沒有被選中設計

XCode10 GM LaunchImage iOS 8.0 and Later 手動選中才出現 iPhone XR/iPhone XS Maxcode

iPhone XR / XS Max 對老版本兼容請求

若是沒有設置iPhone XR/iPhone XS Max啓動圖但設置了iPhone X的啓動圖,iPhone XR / XS Max默認會走iPhone X 的尺寸375ptx812pt,會對內容近乎於等比拉伸放到iPhone XR / XS Max屏幕內,以下圖:cdn

這裏爲何說是近乎於等比拉伸: iPhone X 高寬比:812/375 = 2.16533333 iPhone XR 和 iPhone XS Max 高寬比:896/414 = 2.16425121blog

iPhone XR / XS Max 屏幕尺寸

型號 邏輯尺寸 係數 分辨率
iPhone XR 414pt x 896pt @2 828px x 1792px
iPhone XS Max 414pt x 896pt @3 1242px x 2688px

當時看發佈會以爲XR 828px的分辨率有點奇怪,如今看來並非蘋果不想作720或1080,而是有照顧開發工程師的目的。 XR 和 XS Max 在邏輯大小上很是統一2x,3x就夠了,也不用作其餘的切圖。

因此如今只是須要設計師給2張效果圖:
iPhone XR:828px x 1792px
iPhone XS Max: 1242px x 2688px

Tips

1. 代碼中判斷是不是iPhone X時須要注意

若是你之前是使用設備尺寸來判斷iPhone X那就須要修改了,判斷iPhone X主要是由於劉海的緣由可能要作些特殊處理。鑑於iPhone X/XS/XR/XS Max底部都會有安全距離,因此能夠利用safeAreaInsets.bottom > 0.0來判斷是不是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;
}
複製代碼

參考文檔

Detect if the device is iPhone X
《Tech Talks - Session 207》

相關文章
相關標籤/搜索