隨著iOS 11正式版,以及Xcode9正式版的釋出,已有專案工程對於新版本系統和機型的適配就提上了日程。下面簡單講一講遇到的一些坑,同時也向在解決問題中查閱的資料文章作者表示感謝!
安全區域
坑NO.1 iOS 11下APP中tableView內容下移20pt
整個頁面隱藏了導航欄(自定義導航欄),下面就是一個tableview,加上了MJRefresh第三方。可以明顯看出上方狀態列的部分空白,整個tableview內容下滑了20pt。
原因:iOS 11中automaticallyAdjustsScrollViewInsets屬性被廢棄了,self.automaticallyAdjustsScrollViewInsets = NO 就等於沒有設定(預設是YES),於是頂部就多了一定的contentInset。點開系統標頭檔案就會有提示說明
解決方法:
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上去,拉好約束,一編譯 編譯發現系統報了個錯。
原因:
蘋果在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
如圖,這樣一來就和之前的介面一樣。目前遇到的就這些坑,歡迎大家指正補充~ 最後,作為該行從業人員,不得不講一句:“蘋果爸爸說啥就是啥??”