適配iPhoneX

借著把玩新機(jī)iPhoneX的機(jī)會(huì),對(duì)iPhoneX應(yīng)用中增高的UINavigationBar進(jìn)行了詳細(xì)的學(xué)習(xí)。應(yīng)用適配iPhoneX, 也主要是適配UINavigationBar的變化。

在iPhoneX和iPhone8上運(yùn)行以下代碼:

#define ScreenSize [UIScreen mainScreen].bounds.size
- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationController.navigationBar.translucent = false;
    UINavigationBar *navBar = self.navigationController.navigationBar;
     ;
    
    navBar.barTintColor = [UIColor greenColor];
    NSLog(@"statusBarFrame: %@", NSStringFromCGRect([UIApplication sharedApplication].statusBarFrame));
    NSLog(@"navBar: %@", NSStringFromCGRect(navBar.frame));
    NSLog(@"width: %f", ScreenSize.width);
    NSLog(@"height: %f", ScreenSize.height)    
}

iPhoneX中的結(jié)果:

statusBarFrame: {{0, 0}, {375, 44}}
navBar: {{0, 44}, {375, 44}}
width: 375.000000
height: 812.000000

iPhone8中的結(jié)果:

statusBarFrame: {{0, 0}, {375, 20}}
navBar: {{0, 20}, {375, 44}}
width: 375.000000
height: 667.000000

可以看到iPhoneX中statusBarFrame增加了44-20=24個(gè)點(diǎn)的高度。我們知道,iPhoneX以前開(kāi)發(fā)中,導(dǎo)航欄navigationBar的高度為44,狀態(tài)欄statusBar的高度為20。在自定義navigationBar的頁(yè)面,自定義的View只要以相對(duì)于頂部為64個(gè)點(diǎn)的高度放置即可,而在iPhoneX中就需要變成88個(gè)點(diǎn)。

項(xiàng)目中通過(guò)UINavigationController跳轉(zhuǎn), 是我們常常遇到的場(chǎng)景:


self.navigationItem.title = @"SecondViewController";

其中第二個(gè)頁(yè)面SecondViewController在iPhone8中的渲染情況:


iPhone8

iPhoneX中為:


iPhoneX

明顯看到back被UINavigationBar所遮蓋。

綜上,iPhoneX中的UINavigationBar高度為88。以前以相對(duì)頂部偏移64的高度設(shè)置frame的View會(huì)顯示不正常。而以相對(duì)布局(masonry、auto-layout)設(shè)置的界面會(huì)自動(dòng)調(diào)整。另外,當(dāng)UINavigationBar的translucent(透明度)屬性設(shè)置為false時(shí),應(yīng)用也會(huì)識(shí)別出UINavigationBar高度的變化而正常顯示。

喜歡和關(guān)注都是對(duì)我的鼓勵(lì)和支持~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Screen Size iPhoneX的屏幕尺寸為 375pt × 812pt @3x,像素為 1125px ...
    Mitsui_閱讀 1,658評(píng)論 0 1
  • iPhoneX適配 覺(jué)得不錯(cuò)請(qǐng)點(diǎn)擊下方【喜歡】,為了微博認(rèn)證也是無(wú)賴!還差1660個(gè)?? 屏幕尺寸相關(guān)變化 高度增加...
    樂(lè)Coding閱讀 18,175評(píng)論 8 50
  • 之前寫(xiě)了一篇適配 iOS 11 的文章鏈接,如今 iPhone X 上市后,又要掀起一波適配潮了。對(duì)于開(kāi)發(fā)者來(lái)說(shuō),...
    KavinZhou閱讀 12,370評(píng)論 2 10
  • 重磅!!! 在繼今年年初WWDC之后,蘋(píng)果官方文檔的中文適配逐步加快!現(xiàn)在已經(jīng)出了官方版適配iPhoneX的中文文...
    春田花花幼兒園閱讀 34,638評(píng)論 8 151
  • iPhoneX已經(jīng)發(fā)售,作為苦逼iOS開(kāi)發(fā)程序員又要開(kāi)始適配工作。 先說(shuō)明因?yàn)楸救碎_(kāi)發(fā)的app只有豎屏顯示,所以只...
    小峰o閱讀 1,779評(píng)論 2 2

友情鏈接更多精彩內(nèi)容