我們知道除了iPhoneX以外的設(shè)備導(dǎo)航欄默認(rèn)高度都是20,當(dāng)然蘋(píng)果也為我們提供了計(jì)算狀態(tài)欄frame的方法:
[[UIApplication sharedApplication] statusBarFrame];
這個(gè)方法在正常情況下返回的狀態(tài)欄高度也是20,但當(dāng)正在通話時(shí),或者后臺(tái)有APP正在使用定位功能時(shí),頂部會(huì)出現(xiàn)兩種提示條:
正在通話.png
后臺(tái)有APP使用定位.jpeg
當(dāng)頂部有這兩種提示條出現(xiàn)時(shí),上面的statusBarFrame方法返回的狀態(tài)欄高度就變成了40,在手動(dòng)更改頂部約束的時(shí)候就會(huì)出現(xiàn)問(wèn)題,最后沒(méi)找到解決方法,只能手動(dòng)改回20,感覺(jué)是有那么點(diǎn)low。
if (iPhoneX) {//x上不做任何改變 return rectStatus.size.height + rectNav.size.height; } else { if (rectStatus.size.height == 40) {//頂部有導(dǎo)航或者電話條時(shí),狀態(tài)欄高度系統(tǒng)方法計(jì)算錯(cuò)誤,手動(dòng)置為20 CGFloat fStatusBarHeight = 20; return fStatusBarHeight + rectNav.size.height; } else { return rectStatus.size.height + rectNav.size.height; } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注