你需要的iPhoneX適配
阿新 • • 發佈:2019-01-22
1、啟動App
對於一些老專案,在啟動圖上,可能沒有采用xib或者SB進行適配的,所以可能會出現如圖一,這樣導致整個專案執行就會不能完全貼合。
圖一
解決辦法,在專案設定裡面直接用LaunchScreen.xib或者LaunchScreen.storyboard進行配置啟動圖,這樣專案就會完整顯示了。如圖二
圖二
2、程式進到程式的首頁。如果採用了MJRefresh的重新整理機制,則會顯示如下圖的效果,導致重新整理頭部顯示。不過按照實驗能看到,如果不顯示下拉箭頭,則【劉海】可以正好蓋住(如圖一),
-
不過想讓statusBar變顏色,可以採用view上移-88 則會正常顯示。(如圖二)或者介面不上移動,將重新整理頭部背景色變成和專案頂部背景色一樣也可以,即設定:.mj_header.backgroundColor
-
如果都不想改,可以坐等MJRefresh的作者更新,目前這個問題,已經提交給作者。
圖一
圖二
3、處理到這裡,可能的發現,原來上移status可能是20 ,在iPhone X的裝置上,變成了88,如何設定。可以採用:
1 2 3 4 5 6 7 8 |
// 狀態列(statusbar)
CGRect StatusRect = [[UIApplication sharedApplication] statusBarFrame];
//標題欄
CGRect NavRect = self.navigationController.navigationBar.frame; 然後將高度相加,便可以動態計算頂部高度。
|
4、專案中難免使用全屏的情況,如果介面比較負責,無法採用約束佈局,需要程式碼適配,由於status 的高度改變,需要改變動態的計算。如圖一:
圖一
修改完後:圖二
圖二
5、tableview的導致的問題。如圖一
目前模擬器設定中也存在如下問題,不過目前不確定會不會有所調整。
圖一(1)
圖一(2)
解決辦法:
目前發現在iOS 11中,會預設開啟獲取的一個估算值來獲取一個大體的空間大小,導致不能正常顯示,可以選擇關閉。目前嘗試在delegate中處理不能很好的解決,不過可以直接設定:
1 2 3 |
self.myTableviews.estimatedSectionHeaderHeight= 0 ;
self.myTableviews.estimatedSectionFooterHeight= 0 ;
|
就能夠正常顯示了。圖二
圖二