iPhoneX已經(jīng)發(fā)售帝雇,作為苦逼iOS開發(fā)程序員又要開始適配工作。
先說明因為本人開發(fā)的app只有豎屏顯示彻亲,所以只介紹下個人豎屏適配的方法吮廉。
步入正題:
第一步
如圖先給項目的LaunchImage加個啟動圖片宦芦。勾選“Portrait”屬性如圖紅框所示。勾選后會多一個給iPhoneX的添加啟動圖的圖片填充框调卑。在次框中放入一張1125*2436的啟動圖。當然啟動圖就需要我們的公司的UI大神給了注益。然后啟動你iPhoneX你會發(fā)現(xiàn)iPhoneX的耳朵已經(jīng)填充溯捆,底部的tabbar也多了條黑線。
當然有的人是使用xib或者storyboard來當啟動圖的,就沒有所說的:耳朵留黑與底部沒有黑條的情況煮仇,但是在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了。
當然storyboard好像要好適配一些×ブⅲ看來我也要多用storyboard了政模。
還有一個要補充就是那些把導航欄隱藏的界面要做特殊處理。