暴力適配iphoneX

趁著iphoneX大行其道之際,趕緊寫一篇低質(zhì)量的文章,暴力適配下iphoneX

前言:寫幾個常用的宏定義,和判斷iOS版本的方法,適配的時候方便使用

#define iPhone4 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640,960), [[UIScreen mainScreen] currentMode].size) : NO)

#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640,1136), [[UIScreen mainScreen] currentMode].size) : NO)

#define iPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750,1334), [[UIScreen mainScreen] currentMode].size) : NO)

#define iPhone6Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242,2208), [[UIScreen mainScreen] currentMode].size) : NO)

#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125,2436), [[UIScreen mainScreen] currentMode].size) : NO)

if(@available(iOS11.0,*)) {//判斷當(dāng)前iOS系統(tǒng)版本是不是iOS11

}else{

}

1.iOS11引入了Safe Area Layout Guide概念,如果你的xib報相關(guān)錯誤,那你直接去掉這個選項就好


圖1

如果你想用這個新特性的話,也可以,畢竟這個是專為iphoneX的適配而生,只要你在安全區(qū)域內(nèi)布局,它的運行效果一定是上留天下留地,當(dāng)你使用Safe Area Layout Guide的時候,它的界面上會多出類似于一個view的視圖,我們可以把它看做一個不占位置的view,它只提供了一個相對位置,我們的視圖根據(jù)安全區(qū)域適配就好

圖2

運行效果如圖(如果運行在普通手機上的話,剛好底部鋪滿,頂部留出20像素的狀態(tài)欄)

圖3

這個狀態(tài)下,如果創(chuàng)建個view,設(shè)置frame是(0,0,100,100)的話,它會從安全區(qū)域的(0,0)點開始計算

圖4

2.現(xiàn)在進(jìn)入正題,不用Safe Area Layout Guide如何適配iphoneX:

最容易出問題的地方有:啟動圖,頂部,底部,tableView,scrollview,collectionView,聊天界面

(1)啟動圖:適配iphoneX,首先得給啟動頁一個iphoneX大小的啟動圖,要不然在iphoneX上運行出來的app是有問題的

圖5

(2)頂部、底部:頂部主要分幾種情況:automaticallyAdjustsScrollViewInsets?這個屬性有可能影響滑動視圖的原點位置,如果源碼沒有修改這屬性,那iphoneX的適配最好也不要動;如果整個頁面是collectionView的話調(diào)整它的contentInset就好,需要占滿狀態(tài)欄的話,上移24;如果空出狀態(tài)欄,下移20;底部的話,可以直接給collectionView的frame的高度減去34;如果整個頁面是tableView的話,注意下estimatedSectionHeaderHeight和estimatedSectionFooterHeight這兩個屬性。。把他們的值都設(shè)置為0

(3)前幾天看了下美團的大神們的適配方案,感覺不錯,然后自己就沒動力寫了。。。

https://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651746838&idx=1&sn=44565f985c8da698b4fde31bf33d6dc2&chksm=bd12ab5b8a65224dbeb872dc44be6ef54607809f7f692ab01e62b77a3e8603f336e2e850f9c3&mpshare=1&scene=23&srcid=0928i1n7eQVLDzJk6OsqfHIa#rd

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

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

  • 一.iPhone X尺寸問題 1. 高度增加了145pt,變成812pt. 2.屏幕圓角顯示,注意至少留10pt邊...
    騎行天下閱讀 13,248評論 5 36
  • 導(dǎo)航欄 導(dǎo)航欄高度的變化 iOS11之前導(dǎo)航欄默認(rèn)高度為64pt(這里高度指statusBar + Navigat...
    西門淋雨閱讀 847評論 0 0
  • iOS開發(fā)過程中,使用的一些常用宏定義 字符串是否為空#define kStringIsEmpty(str) ([...
    goyohol閱讀 5,542評論 30 84
  • #pragma mark - 設(shè)備類型 #define kiPhone4 ([UIScreen instanc...
    高喬人閱讀 1,074評論 1 0
  • 導(dǎo)航欄 導(dǎo)航欄高度的變化 iOS11之前導(dǎo)航欄默認(rèn)高度為64pt(這里高度指statusBar + Navigat...
    xukuangbo_閱讀 1,142評論 0 3

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