適配iOS 11和iPhoneX螢幕適配遇到的一些坑

搶手的哥發表於2017-12-14

隨著iOS 11正式版,以及Xcode9正式版的釋出,已有專案工程對於新版本系統和機型的適配就提上了日程。下面簡單講一講遇到的一些坑,同時也向在解決問題中查閱的資料文章作者表示感謝!

安全區域

坑NO.1 iOS 11下APP中tableView內容下移20pt

image.png

整個頁面隱藏了導航欄(自定義導航欄),下面就是一個tableview,加上了MJRefresh第三方。可以明顯看出上方狀態列的部分空白,整個tableview內容下滑了20pt。

原因:iOS 11中automaticallyAdjustsScrollViewInsets屬性被廢棄了,self.automaticallyAdjustsScrollViewInsets = NO 就等於沒有設定(預設是YES),於是頂部就多了一定的contentInset。點開系統標頭檔案就會有提示說明

image.png

解決方法:

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

關於安全區域適配,簡書上的這篇文章iOS 11 安全區域適配總結介紹得非常詳細,請參考這篇文章。

iPhoneX

坑NO.2 LaunchImage問題

關於帶劉海的iPhoneX,如果你的APP在iPhoneX上執行發現沒有充滿螢幕,上下有黑色區域,那麼你應該也像我一樣LaunchImage沒有用storyboard而是用的Assets。Assets中解決辦法新增一張啟動圖,尺寸為1125x2436,或者直接啟用LaunchScreen.storyboard。 另外在這裡提供一個判斷iPhoneX機型的巨集定義,前提是launchimage已經設定好。


#define IS_iPhoneX  UIScreen.mainScreen.currentMode.size.width == 1125 && UIScreen.mainScreen.currentMode.size.height == 2436

複製程式碼

坑NO.3 storyboard、xib上的安全區問題

本人在做解決第二個坑的時候,建立了storyboard作為啟動圖使用。按照以往的思路,搞一個imageView覆蓋到整個控制器的view上去,拉好約束,一編譯 編譯發現系統報了個錯。

image.png

原因:

蘋果在iOS7中引入的Top Layout Guide和Bottom Layout Guide,這些佈局指南在iOS 11中被棄用,取而代之的是Safe Area Layout Guide.

因為專案要求系統最低適配iOS 8,所以要對這裡進行處理。

解決方法:

1、開啟右側的 Show the File inspetcor 2、去掉 Use Safe Area Layout Guides

image.png
如圖,這樣一來就和之前的介面一樣。

目前遇到的就這些坑,歡迎大家指正補充~ 最後,作為該行從業人員,不得不講一句:“蘋果爸爸說啥就是啥??”

相關文章