說明:heightOfAddtionalHeader為劉海屏多出來的高度,這個(gè)高度相比于非iPhoneX以及以后的設(shè)備來說多出來的部分.??


狀態(tài)欄高度:
- 對于非iPhoneX設(shè)備來說,高度為20.0,
- 對于iPhoneX以及以后的設(shè)備高度為44.0; 即為20.0 + heightOfAddtionalHeader(24.0);
所以我們只需要在代碼上需要考慮頂部導(dǎo)航欄的高度的地方加上如下代碼,那么代碼會自動計(jì)算導(dǎo)航欄高度;
//劉海屏額外的高度
let?heightOfAddtionalHeader:CGFloat= {
? ? if UIDevice.current.isiPhoneXorLater(){
? ? ? ? ? ? return?24.0
? ? }else{
? ? ? ? return?0.0
? ? }
}()
導(dǎo)航欄底部:
- 對于非iPhoneX設(shè)備來說,高度為0.0,
- 對于iPhoneX以及以后的設(shè)備高度為34.0 ; 即為0.0 + heightOfAddtionalFooter(34.0);
所以我們只需要在代碼上需要考慮頂部導(dǎo)航欄的高度的地方加上如下代碼,那么代碼會自動計(jì)算導(dǎo)航欄高度;
//底部非安全區(qū)域高度
let?heightOfAddtionalFooter:CGFloat= {
?if?UIDevice.current.isiPhoneXorLater(){
?return?34.0
}else{
?return?0.0
? ? }
}()
extension?UIDevice{
//判斷設(shè)備是不是iPhoneX以及以上
?publicfuncisiPhoneXorLater() ->Bool{
?let?screenHieght = UIScreen.main.nativeBounds.size.height
?if?screenHieght == 2436 || screenHieght == 1792 || screenHieght ==2688 || screenHieght ==1624{
?return?true
? ? ? ? }
?return?false
? ? }
}