趁著iphoneX大行其道之際悔醋,趕緊寫一篇低質量的文章,暴力適配下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,*)) {//判斷當前iOS系統(tǒng)版本是不是iOS11
}else{
}
1.iOS11引入了Safe Area Layout Guide概念,如果你的xib報相關錯誤充择,那你直接去掉這個選項就好
如果你想用這個新特性的話德玫,也可以,畢竟這個是專為iphoneX的適配而生椎麦,只要你在安全區(qū)域內布局宰僧,它的運行效果一定是上留天下留地,當你使用Safe Area Layout Guide的時候观挎,它的界面上會多出類似于一個view的視圖琴儿,我們可以把它看做一個不占位置的view,它只提供了一個相對位置嘁捷,我們的視圖根據安全區(qū)域適配就好
運行效果如圖(如果運行在普通手機上的話造成,剛好底部鋪滿,頂部留出20像素的狀態(tài)欄)
這個狀態(tài)下雄嚣,如果創(chuàng)建個view晒屎,設置frame是(0,0缓升,100鼓鲁,100)的話,它會從安全區(qū)域的(0港谊,0)點開始計算
2.現在進入正題骇吭,不用Safe Area Layout Guide如何適配iphoneX:
最容易出問題的地方有:啟動圖,頂部歧寺,底部燥狰,tableView,scrollview成福,collectionView碾局,聊天界面
(1)啟動圖:適配iphoneX,首先得給啟動頁一個iphoneX大小的啟動圖奴艾,要不然在iphoneX上運行出來的app是有問題的
(2)頂部净当、底部:頂部主要分幾種情況:automaticallyAdjustsScrollViewInsets?這個屬性有可能影響滑動視圖的原點位置,如果源碼沒有修改這屬性蕴潦,那iphoneX的適配最好也不要動像啼;如果整個頁面是collectionView的話調整它的contentInset就好,需要占滿狀態(tài)欄的話潭苞,上移24忽冻;如果空出狀態(tài)欄,下移20此疹;底部的話僧诚,可以直接給collectionView的frame的高度減去34遮婶;如果整個頁面是tableView的話,注意下estimatedSectionHeaderHeight和estimatedSectionFooterHeight這兩個屬性湖笨。旗扑。把他們的值都設置為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