iOS ---【開發適配iPhone XS, iPhone XS Max, iPhone XR】
總結為以下幾點:
一、 螢幕大小適配
三款手機,分別是iPhone XS,iPhone XR,iPHone X Max,其中iPhone XS的螢幕尺寸和iPhone X的是一致的,另外兩款都有了新的尺寸,具體尺寸如下
具體原理性的東西就多說了,因為iPhoneX系列都一樣,本文只說明一下具體怎麼做,要適配螢幕,首先得讓他以正確的姿勢啟動,如果你使用的是LaunchScreen.storyboard,就不需要考慮這個了,但如果你使用的是LaunchImag,就需要提供正確的啟動圖。需要注意的是XR使用的@2x的圖。
啟動圖尺寸 機型 命名
640 × 960 iPhone4s [email protected]
640 × 1136 iPhone5s [email protected]
750 × 1334 iPhone [email protected]
1242 × 2208 iPhonePlus [email protected]
1125 × 2436 iPhoneX, XS [email protected]
828 x 1792 iPhoneXR
1242 x 2688 iPhoneX Max [email protected]
本文提到的這四款手機都有一個共同的特點,就是“齊劉海”+底部觸控條
針對這種樣式的螢幕,我們處理方法是一樣,幾個巨集直接搞定 怎麼判斷是不是iPhone X? 獲取當前螢幕寬度或高度與尺寸進行比較就可以了
#define kNavBarHeight (iphoneX ? 88.0 : 64.0) #define kBottomBarHeight (iphoneX ? 34.0 : 0) #define kContentHeight (kScreenHeight - kNavBarHeight-kBottomBarHeight)
針對繼承自UIScrollView的,需要處理一下內邊距
第一步:關閉自動調整內邊距 if (@available(iOS 11.0, *)) { [UIScrollView appearance].contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; }
第二步:在使用的地方手動設定內邊距(千萬別全域性設定,容易出事) self.scrollView.contentInset = UIEdgeInsetsMake(0, 0, kBottomBarHeight, 0); 這樣設定以後,底下的觸控區域就能正常顯示內容了,而且當UIScrollView滑到最底部的時候,不會被遮住。
除此之外,有些比較大的控制元件,產品會要求按照螢幕比例進行調整,小螢幕的顯示的小一點,大螢幕的顯示大一點,這個也是兩個巨集搞定 #define kScaleH (kScreenHeight/667.0) #define kScaleW (kScreenWidth/375.0) 解釋一下為什麼除的667和375,因為UI給的設計圖示按照667 * 375的螢幕給的,如果你們的UI小姐姐給的設計圖是按照iPhone5s的尺寸設計的,分母就要換成568和320。
二、老生常談的安全區域(Safe Area)
這裡著重說明了一下collectionView
豎屏展示的內容:
橫屏展示內容:
解決辦法:
-
1.如果使用storyBoard或者xib的話,需要在collectionView上,勾選Safe Area。
- 2.如果使用程式碼的話,橫屏新增適配程式碼即可(比較簡單,自行百度吧)。
三、推薦使用Auto Layout。
Apple公司已經數次提及Auto Layout在新版本的使用中,效能非常好,不過考慮國內公司目前的情況,純用Auto Layout開發的公司少之又少,純用storyBoard和Xib開發的公司更是少之又少。