開篇廢話
iPhone X 2017年10 月 27 日開始預(yù)購榆俺,11 月 3 日開始發(fā)售时呀,聽說限購审洞,所以看到我文章的劫谅,準(zhǔn)備去預(yù)約吧刁俭,預(yù)約到了轉(zhuǎn)手賣出赞季,說不定能賺點(diǎn)小錢沈跨,當(dāng)然了土豪都是買來自己用篮奄,那么你不要的iPhone7能便宜賣給小弟我嗎展氓,感激不盡穆趴。下文中我就以X代表iPhoneX來表述。在網(wǎng)上搜了一下適配X的文章遇汞,都是說什么X的屏幕密度未妹、X的屏幕高度、X的屏幕寬度和8的寬度一樣什么什么的看得我一臉懵嗶空入。
適配第一步
? 首先需要一張啟動(dòng)圖尺寸為1125*2436,添加到項(xiàng)目中的啟動(dòng)圖處络它。
安全區(qū)域
? 在X的屏幕上,statusBar的高度是40歪赢,底部虛擬home鍵區(qū)域高度34(別告訴我你不知道statusBar和底部虛擬Home鍵),那么屏幕高度[[UIScreen mainScreen] bounds].size.height - 74 = 剩下的區(qū)域就是所謂的安全區(qū)域化戳,與非X的iPhone手機(jī)相比呢,就多占用了屏幕高度的54個(gè)單位埋凯。沒錯(cuò)点楼,我是這樣理解安全區(qū)域的。
navigationBar和statusBar高度
? 如果你所在的項(xiàng)目都是用代碼編寫的白对,那么這個(gè)時(shí)候我建議你復(fù)制我這里的幾個(gè)宏,對應(yīng)的也不用寫注釋了掠廓,相信不管你是老司機(jī)還是新司機(jī),都能明白這幾個(gè)宏的意思甩恼,實(shí)在不明白我也幫不了什么忙蟀瞧。
#define kStatusBarHeight [[UIApplication sharedApplication] statusBarFrame].size.height
#define kNavBarHeight 44.0
#define kTopHeight (kStatusBarHeight + kNavBarHeight)
具體的用法呢,就是媳拴,如果你項(xiàng)目中有計(jì)算用到±64黄橘,同時(shí)這個(gè)64是你代表statusBar+navgationBar的地方,都替換為kTopHeight就可以了屈溉。
底部tabBar
同上塞关,你僅需要用宏去控制一下你項(xiàng)目中所有用到±49,同時(shí)這個(gè)49是代表你tabBar的高度的地方子巾。
#define kTabBarHeight ([[UIApplication sharedApplication] statusBarFrame].size.height>20?83:49)
#define isIPhoneX kTopHeight > 64
#define kSafeAreaBottom isIPhoneX ? 34 : 0
如果沒有tabBar帆赢,也需要去適配底部虛擬home鍵的區(qū)域差小压。方法就是在所有有計(jì)算頁面frame展示的地方±kSafeAreaBottom就可以了。另外椰于,tabBar的高度一定要設(shè)置為kTabBarHeight怠益。
xib適配安全區(qū)域
如果你所在項(xiàng)目所有控制器都有xib,或者故事版瘾婿,那這個(gè)適配的話就要好做些了蜻牢,相信一張圖就能看明白所有,如下:
選中控制器的view偏陪,然后選file inspector抢呆,勾選Use SafeArea Layout Guides,你就會(huì)發(fā)現(xiàn)你的View下面多了一個(gè)類似控件的Safe Area笛谦,你就可以對它設(shè)置約束抱虐,比如View下面是TableView,只需將TableView的bottom約束=Safe Area的Bottom就可以了饥脑。具體怎么設(shè)置就不多說了恳邀。
最后
祝看到此文的朋友升職加薪天天開心灶轰,有個(gè)好身體谣沸!