本文首發(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劃不到底部,