iOS11適配iPhoneX總結(jié)

本文首發(fā)地址
屏幕尺寸相關(guān)變化

高度增加了145pt,變成812pt.
狀態(tài)欄高度由20pt變成44pt,留意這個距離就能避開“劉?!钡膶擂?,相應(yīng)的導(dǎo)航欄以上變化64->88。
底部工具欄需要為home indicator留出34pt邊距。
物理分辨率為1125px * 2436px.
啟動圖的適配

通過LaunchScreen.storyboard方式啟動

如果啟動圖原來使用的Assets中的LaunchImage

給Brand Assets添加一張1125*2436大小的圖片

打開Assets.xcassets文件夾,找到Brand Assets
右鍵Show in Finder
添加一張1125*2436大小的圖片
修改Contents.json文件,添加如下內(nèi)容

{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "2436h",
"filename" : "1125_2436.png",
"minimum-system-version" : "11.0",
"orientation" : "portrait",
"scale" : "3x"
}
再次啟動App就可以看到全屏顯示了

App內(nèi)部樣式適配

在適配之前先介紹下viewSafeAreaInsetsDidChange的調(diào)用順序:

viewDidLoad

viewWillAppear

viewSafeAreaInsetsDidChange

? UIEdgeInsets

  • top : 44.0
  • left : 0.0
  • bottom : 34.0
  • right : 0.0
    viewWillLayoutSubviews

viewDidAppear

只有在調(diào)用viewSafeAreaInsetsDidChange及以后的方法才能獲得view和Controller的UIEdgeInsets。所以在viewDidLoad中根據(jù)Safe Area設(shè)置界面會有問題。

自定義導(dǎo)航欄的情況

會發(fā)現(xiàn)原來設(shè)置64高度的自定義Bar離劉海很近。原因就是iPhoneX下狀態(tài)欄高度由20變成了44。

本人習(xí)慣用代碼開發(fā)這里只介紹代碼解決辦法:

用代碼來布局,弊端是原來用Storyboard布局的改成純代碼,累死程序員不償命。方法就是在viewSafeAreaInsetsDidChange設(shè)置自定義bar的高度。

@available(iOS 11.0, *)
override func viewSafeAreaInsetsDidChange() {
navigationBarH = view.safeAreaInsets.top + 44
}

TableView、WebView、CollectionView等繼承ScrollView的適配

原來的老項目中包含TableView、CollettionView的頁面如果是使用Storyboard設(shè)置的約束,在iPhoneX中可能會有34像素的安全區(qū)域,scrollview劃不到底部,

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

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

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