iOS11和iPhone X屏幕適配

iPhone X上市了,給設計師和開發(fā)工程師們又帶了新的挑戰(zhàn),那一條齊劉海和四個圓角的屏幕,不得不去進行屏幕適配,并且蘋果的iOS11也進行了一些方法的替換,這就讓以前寫的代碼在iOS11的系統(tǒng)上跑起來有了不小挑戰(zhàn)。

首先先說一下安全區(qū)

Safe Area

以往的其他iPhone屏幕都是長方形的,所以里面的顯示區(qū)域不會存在遮擋的現(xiàn)象。iPhone X由于全面屏的設計,在屏幕的上方,下方都變成了弧形的,而控件都還是長方形,所以就會出現(xiàn)顯示不全的情況。
為了解決遮擋的問題,所在在設計的時候就要避開這個區(qū)域,所以實際的iPhone X的安全區(qū)域就是圖上所畫的綠色的區(qū)域,而白色的區(qū)域,蘋果會根據(jù)上下的顏色而自動填充。

高度對比圖

在其他iPhone上狀態(tài)欄的高度為20個像素,而在iPhone X上狀態(tài)欄的高度變?yōu)榱?8個像素,并且在底部多出了48個像素。

當我們打印iPhone X的屏幕尺寸時[UIScreen mainScreen].bounds.size 打印值為375x812注意這個812是算上安全區(qū)域的大小

好了知道這些,我就就知道怎么去適配屏幕了

1.一個界面一般都會有UITableView、UIScrollView、UICollectionView,并且一般會把這些作為底部視圖
這種情況下設置視圖大小的時候個人建議直接使用self.view.bounds就可以了。
像iOS11中已經(jīng)廢除了automaticallyAdjustsScrollViewInsets這個方法,所以需要進行版本判斷

 if (@available(iOS 11.0, *)) {
     self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
 }else {
     self.automaticallyAdjustsScrollViewInsets = NO;
 }

2.如果要拿出狀態(tài)欄的高度可以使用一個宏

// 屏幕寬高
#define kScreenW [UIScreen mainScreen].bounds.size.width
#define kScreenH [UIScreen mainScreen].bounds.size.height
// iPhone X 宏定義
#define iPhoneX (kScreenW == 375.f && kScreenH == 812.f ? YES : NO)
// 適配iPhone X 狀態(tài)欄高度
#define CF_StatusBarHeight (iPhoneX ? 44.f : 20.f)

3.如果要拿出導航欄的高度可以使用一個宏

// 適配iPhone X 導航欄高度
#define CF_NavHeight (iPhoneX ? 88.f : 64.f)

4.如果要拿出Tabbar的高度可以使用一個宏

// 適配iPhone X Tabbar距離底部的距離
#define CF_TabbarSafeBottomMargin (iPhoneX ? 34.f : 0.f)
// 適配iPhone X Tabbar高度
#define CF_TabbarHeight (iPhoneX ? (49.f+34.f) : 49.f)

iOS 11中如果不實現(xiàn)-tableView: viewForFooterInSection:-tableView: viewForHeaderInSection:,那么-tableView: heightForHeaderInSection:- tableView: heightForFooterInSection:不會被調用。
這是因為estimatedRowHeight estimatedSectionHeaderHeight estimatedSectionFooterHeight三個高度估算屬性由默認的0變成了UITableViewAutomaticDimension,導致高度計算不對,解決方法是實現(xiàn)對應方法或吧這三個屬性設為0。

在使用圖片方面

4.7‘’及以下的設備目前使用的圖片全是@2x
plus系列和iPhone X使用的圖片是@3x

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容