1. 程式人生 > >我的iOS11及iPhoneX適配(三)

我的iOS11及iPhoneX適配(三)

今天說說在iPhoneX適配碰到的問題:

一、部分頁面頂部超過了iPhoneX的“劉海”

二、部分頁面底部被虛擬home按鍵遮擋。





造成以上問題是:

一、iPhoneX 的狀態列高度產生了變化,由 20 變成了 44

二、 iPhoneX 新增了 34 點高度的虛擬 home 區域

因此,iPhoneX的這2個問題主要是對頁面頂部和底部高度進行調整。

對於iPhoneX的識別,需要定定義一個巨集,目前選用的方法是從高度上判斷:

#defineisiPhoneX (([[UIScreen mainScreen] bounds].size.height)==812.f ? 1 : 0

)


然後對於狀態列的高度調整,把之前定義的狀態列高度是20的巨集,改為:

#define STATUS_HEIGHT (isiPhoneX ? 44 : 20)


再新增一個虛擬按鍵的高度:

#define VirtualHomeForiPhoneX (isiPhoneX ? 34 : 0)


剩下的,就是在需要調整的頁面進行響應的高度修改即可。

同時,在修改中也發現一些之前的程式碼寫的不規範的地方,比如有些狀態列的高度沒有用巨集,直接寫的20(這個問題跟導航欄類似),當然還需要注意的是,狀態列的高度和底部高度調整後,顯示頁面的高度也都對應的調整。

最後,把上面幾個頁面修改後的效果:





以上,只是部分iPhoneX的頁面適配。