iPhone X和iOS 11的簡單適配

weixin_33860722發表於2017-09-19

ios          iPhone11X適配

版權宣告:本文為博主原創文章,未經博主授權不得轉載。

從9月15號,開始預定了iPhone 8 以及iPhone 8 Plus。Xcode 9.0 GM版本和iOS 11 GM 版本也就釋出了。

接下來,適配iOS 11是首要的適配的,網上教程很多,不在贅述。這裡主要講的是 iPhone X的適配。大神級別的可以不用看,我這裡講的主要是基礎的適配工作。我將按照一個專案的適配順序來講解:

1、啟動App

對於一些老專案,在啟動圖上,可能沒有采用xib或者SB進行適配的,所以可能會出現如圖一,這樣導致整個專案執行就會不能完全貼合。

1447452-a0fd80dd145f700f.png

解決辦法,在專案設定裡面直接用LaunchScreen.xib或者LaunchScreen.storyboard進行配置啟動圖或者配置一張單獨的啟動圖,這樣專案就會完整顯示了。

1447452-f7ea945e0fdcbc93.png

2、程式進到程式的首頁。如果採用了MJRefresh的重新整理機制,則會顯示如下圖的效果,導致重新整理頭部顯示。不過按照實驗能看到,如果不顯示下拉箭頭,則【劉海】可以正好蓋住,

1447452-e5019f5b1436747b.png

·不過想讓statusBar變顏色,可以採用view上移-88 則會正常顯示。或者介面不上移動,將重新整理頭部背景色變成和專案頂部背景色一樣也可以,即設定:.mj_header.backgroundColor

·如果都不想改,可以坐等MJRefresh的作者更新,目前這個問題,已經提交給作者。

1447452-3d6ebcce9197bb05.png

3、處理到這裡,可能的發現,原來上移status可能是20 ,在iPhone X的裝置上,變成了88,如何設定。可以採用:

// 狀態列(statusbar)

CGRect StatusRect = [[UIApplication sharedApplication] statusBarFrame];

//標題欄

CGRect NavRect = self.navigationController.navigationBar.frame;

然後將高度相加,便可以動態計算頂部高度。

4、專案中難免使用全屏的情況,如果介面比較負責,無法採用約束佈局,需要程式碼適配,由於status 的高度改變,需要改變動態的計算。

1447452-409927d6d85746d5.png

修改完後:

1447452-3c58d637f7f861a8.png

5、tableview的導致的問題。如圖一

目前模擬器設定中也存在如下問題,不過目前不確定會不會有所調整。

1447452-59258368ee292aa7.png
1447452-fb92a8694e8d5363.png

解決辦法:

目前發現在iOS 11中,會預設開啟獲取的一個估算值來獲取一個大體的空間大小,導致不能正常顯示,可以選擇關閉。目前嘗試在delegate中處理不能很好的解決,不過可以直接設定:

self.myTableviews.estimatedSectionHeaderHeight=0;

self.myTableviews.estimatedSectionFooterHeight=0;

就能夠正常顯示了。

1447452-705b8081e3abcbd6.png

相關文章