iOS適配iPhoneX

iPhoneX已經(jīng)發(fā)售,作為苦逼iOS開發(fā)程序員又要開始適配工作。

先說明因為本人開發(fā)的app只有豎屏顯示,所以只介紹下個人豎屏適配的方法。

步入正題:

第一步

如圖先給項目的LaunchImage加個啟動圖片。勾選“Portrait”屬性如圖紅框所示。勾選后會多一個給iPhoneX的添加啟動圖的圖片填充框。在次框中放入一張1125*2436的啟動圖。當(dāng)然啟動圖就需要我們的公司的UI大神給了。然后啟動你iPhoneX你會發(fā)現(xiàn)iPhoneX的耳朵已經(jīng)填充,底部的tabbar也多了條黑線。

當(dāng)然有的人是使用xib或者storyboard來當(dāng)啟動圖的,就沒有所說的:耳朵留黑與底部沒有黑條的情況,但是在iPhoneX上運行會發(fā)現(xiàn)啟動圖的底部留白比其他設(shè)備要多出來很多,個人比較搓的解決方案是針對iPhoneX做特殊處理頂部多30個的偏移。

第二步

啟動圖弄好了,那就要針對ViewController里面的控件寬高做適配,我喜歡手寫代碼很少使用Storyboard來開發(fā),所以我按設(shè)計稿的比例,來縮放控件在不同設(shè)備上的寬高。比如:設(shè)計稿的寬高比例是375:667(大部分設(shè)計師都是以iPhone6的邏輯比例做設(shè)計稿),那么實際設(shè)備上,控件的高就是((設(shè)計稿控件高度/667.0f)*[UIScreen mainScreen].bounds.size.height)。


我一般會寫個宏:

#define? IPH(asd) ((asd/667.0f)*[UIScreen mainScreen].bounds.size.height)

asd表示設(shè)計稿上控件的高度。

類似的寬度同理

#define? IPW(asd) ((asd/375.0f)*[UIScreen mainScreen].bounds.size.width)

asd:表示設(shè)計稿上控件的寬度


這種按設(shè)計稿比例來縮放的適配方法,來適配除iPhoneX的設(shè)備還算過得去,但是用這種方法適配iPhoneX會發(fā)現(xiàn)高度的計算不是很正確,經(jīng)過我的一些研究發(fā)現(xiàn)iPhoneX去掉耳朵的高度與底部黑線的高度正好是設(shè)計稿(大部分設(shè)計師都是以iPhone6的邏輯比例做設(shè)計稿)的@3x比例。去掉頭部與底部就是蘋果說的"safe area"(這是我的個人理解,可能是錯的??)。

所以按照這個說法,iPhoneX去打頭部耳朵的高度與底部黑線的高度也是@3x的比例。那么頭部高多少,底部又是高多少呢?iOS11出現(xiàn)一個新的屬性safeAreaInsets,這個屬性的值是UIEdgeInsets(top: 88.0, left: 0.0, bottom: 34.0, right: 0.0),由此可見iPhoneX的高度[UIScreen mainScreen].bounds.size.height-88-34 那就正好的@3x了。

當(dāng)然storyboard好像要好適配一些。看來我也要多用storyboard了。

還有一個要補充就是那些把導(dǎo)航欄隱藏的界面要做特殊處理。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容