隨著iOS 11正式版,以及Xcode9正式版的發(fā)布屯曹,已有項目工程對于新版本系統(tǒng)和機型的適配就提上了日程燎悍。下面簡單講一講遇到的一些坑,同時也向在解決問題中查閱的資料文章作者表示感謝槽唾!
安全區(qū)域
坑NO.1 iOS 11下APP中tableView內(nèi)容下移20pt
整個頁面隱藏了導航欄(自定義導航欄)裆甩,下面就是一個tableview鲁豪,加上了MJRefresh第三方诱桂。可以明顯看出上方狀態(tài)欄的部分空白呈昔,整個tableview內(nèi)容下滑了20pt挥等。
原因:iOS 11中automaticallyAdjustsScrollViewInsets屬性被廢棄了,self.automaticallyAdjustsScrollViewInsets = NO 就等于沒有設置(默認是YES)堤尾,于是頂部就多了一定的contentInset肝劲。點開系統(tǒng)頭文件就會有提示說明
解決方法:
if (@available(iOS 11.0, *)) {
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
關于安全區(qū)域適配,簡書上的這篇文章iOS 11 安全區(qū)域適配總結介紹得非常詳細郭宝,請參考這篇文章辞槐。
iPhoneX
坑NO.2 LaunchImage問題
關于帶劉海的iPhoneX,如果你的APP在iPhoneX上運行發(fā)現(xiàn)沒有充滿屏幕粘室,上下有黑色區(qū)域榄檬,那么你應該也像我一樣LaunchImage沒有用storyboard而是用的Assets。Assets中解決辦法添加一張啟動圖衔统,尺寸為1125x2436鹿榜,或者直接啟用LaunchScreen.storyboard。
另外在這里提供一個判斷iPhoneX機型的宏定義锦爵,前提是launchimage已經(jīng)設置好舱殿。
#define IS_iPhoneX UIScreen.mainScreen.currentMode.size.width == 1125 && UIScreen.mainScreen.currentMode.size.height == 2436
坑NO.3 storyboard、xib上的安全區(qū)問題
本人在做解決第二個坑的時候险掀,創(chuàng)建了storyboard作為啟動圖使用沪袭。按照以往的思路,搞一個imageView覆蓋到整個控制器的view上去樟氢,拉好約束冈绊,一編譯
編譯發(fā)現(xiàn)系統(tǒng)報了個錯。
原因:
蘋果在iOS7中引入的Top Layout Guide和Bottom Layout Guide,這些布局指南在iOS 11中被棄用埠啃,取而代之的是Safe Area Layout Guide.
因為項目要求系統(tǒng)最低適配iOS 8死宣,所以要對這里進行處理。
解決方法:
1霸妹、打開右側(cè)的 Show the File inspetcor
2十电、去掉 Use Safe Area Layout Guides
如圖知押,這樣一來就和之前的界面一樣叹螟。
目前遇到的就這些坑鹃骂,歡迎大家指正補充~
最后,作為該行從業(yè)人員罢绽,不得不講一句:“蘋果爸爸說啥就是啥????”