1. 程式人生 > >你需要的iPhoneX適配

你需要的iPhoneX適配

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;

就能夠正常顯示了。圖二

圖二