我的iOS11及iPhoneX適配(三)
阿新 • • 發佈:2019-02-17
今天說說在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的頁面適配。