iphoneX,XsMax適配

大神蝦發表於2018-10-12

以前的適配方法

蘋果最新出的機型,帶著劉海真的是超級難看。我覺得賈伯斯再世一定會阻止這種設計,同時我覺得面部識別也沒什麼卵用,5StouchID那麼靈敏,你弄了個壓力屏以後,touchID變得屎一樣。還有你的那個壓力屏,輕按重按,使勁按,這種東西到現在也沒什麼特別有用的地方好不,蘋果使用者親身體驗,當然只代表我個人看法。

書歸正傳,他是爸爸,他愛怎麼設計就怎麼設計吧。我們現在來看一下如何適配,我先說一下我以前的適配方式,mansory。沒錯,如果用了這個,好像也不用考慮螢幕大小了吧?然而專案老程式碼還是有一部分屬於原始程式碼,同時從劉海螢幕開始,蘋果弄了個SafeArea的東西。老程式碼巨集定義了兩個類,lsRadioX和lsRadioY

#define lsRadioX [[UIScreen mainScreen] bounds].size.width/375
#define lsRadioY  [UIScreen mainScreen].bounds.size.height/667
複製程式碼

這兩行程式碼用起來就是這樣的,我們用設計稿的x座標(我們設計稿都是蘋果6的設計稿)乘以lsRadioX,就得到了理論上任意螢幕寬的座標。解釋起來其實就是按照比例來的,設計稿上按鈕長度60,那麼這個60就佔蘋果6的螢幕寬的60/375,那麼任意螢幕上的寬度就是[[UIScreen mainScreen] bounds].size.width的60/375。

現在的適配情況

首先新機型要新增對應的LaunghImage,這個我就不說了。另外劉海螢幕的適配方案,也暫時不去討論,因為1個是我們的設計壓根不考慮這個東西,另一個是還沒研究。就說上面的那種方法,到現在以後遇到了極大的問題。因為蘋果神經病一樣給iphoneX和XsMax設計的特別長,它和蘋果6基本上用一套設計稿的話也不能通過直接比例轉化這種簡單的方式了。所以現在只能寫一個巨集

#define lsRadioY ([UIScreen mainScreen].bounds.size.height>736?1:[UIScreen mainScreen].bounds.size.height/667)
複製程式碼

即使這樣仍然有部分頁面適配出現問題,原因很簡單,因為蘋果的全面屏,出來一個safeArea,安全區域。原本的手機可視區域就是安全區域,但是iphoneX系列的就不是了,而是擷取頭部88距離(沒錯由於狀態列從20變成了44,導航欄整體就變成了88),還有底部34的距離(底部圓角的距離)。

好了,大概就這個樣子,寫東西嘛方便自己加深理解,有機會幫到別人就更高了,我自知才疏學淺,這裡有一個寫的更詳細的,涉及到iOS11的適配,本文暫不引用啦。 https://www.剪樹.com/p/3a9ad4f0fa32

相關文章