趁著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)錯誤,那你直接去掉這個選項就好

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

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

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

2.現(xiàn)在進(jìn)入正題,不用Safe Area Layout Guide如何適配iphoneX:
最容易出問題的地方有:啟動圖,頂部,底部,tableView,scrollview,collectionView,聊天界面
(1)啟動圖:適配iphoneX,首先得給啟動頁一個iphoneX大小的啟動圖,要不然在iphoneX上運行出來的app是有問題的

(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