? ? ? ? iPhone X上市了!看這分辨率,真爽;看這全面屏,真爽;看這劉海,真丑!喬布斯的棺材板要按耐不住了。iPhone X雖然充滿槽點,依舊阻擋不了國人的熱情,5秒售磐?!所以,最終結(jié)果是,全公司都沒有給我這個小開發(fā)配一臺測試機,然后我們的產(chǎn)品過來了:親,我們的APP也要適配iPhone X噢~。(心里想著不給手機不做適配)
? ? ? ? 唉,沒有拿到第一批iPhone X,但是我們還有Xcode 9啊哈哈哈哈,寫個小Demo模擬器上用iPhone X跑一遍,找一找用StoryBoard做適配的感覺。先上兩張圖對比一下,在iPhone 8 和iPhone X的情況下label的顯示效果:
開始修改適配iPhone X
? ? ? ? 首先是一開始跑在iPhone 8 上的Demo,沒有在啟動頁添加一張適配X的啟動圖(1125x2436@3x)時候,在X上的頁面就會顯示大額頭和大下巴,所以
? ? ? ? 第一步是使用LaunchScreen.xib 或者 LaunchScreen.storyboard 進行配置啟動圖,圖片的尺寸是1125x2436@3x,然后在X上的啟動后會自動滿屏了。
? ? ? ? 接下來,看一看頁面的適配:分別做了幾個測試,主要是測試頂部和底部關(guān)于安全區(qū)的適配問題。正常情況下,我們想要添加一個label在頁面上,在X沒出來之前,所有頁面的頂部的高度都是64,然而在X的屏幕上,頂部的高度變成了88,所以之前我們偷懶寫死控件距離頂部的約束都是64的坑就出來了。沒辦法,現(xiàn)在就要一個一個頁面去檢查了。
? ? ? ? 之前我們設(shè)置一個控件的約束都是距離頂部view的,隨著Xcode9的出來,設(shè)置約束的頁面出現(xiàn)了一個safe area(跟著X一起出現(xiàn)的安全區(qū));就是我們用storyboard做適配的時候,基于safe area就會自動幫我們在所有機型上完成適配了。看圖
? ? ? ? 這樣設(shè)置頂部的約束后,在所有機型上就會自動顯示在topbar下面,如果我們把頂部的約束寫死成64,在iPhoneX上就會被導航欄遮擋了,在其他機型上正常顯示。如果寫死成88,在iPhoneX上剛好顯示出來,但是在其他機型上就會往下偏移(當然,你用代碼布局的話不需要考慮這么多)。
相對與底部也一樣,因為iPhoneX底部多了home條,所以我們做底部的適配也要避免被home條遮擋的問題。IphoneX以前的機型,我們做底部的的約束可以設(shè)置距離View的約束為0,但是在iPhoneX上,再設(shè)置距離View的約束為0,則會被遮擋了,像這樣:
? ? ? ?當然,距離View的約束也可以設(shè)置為20,這樣控件會往上偏移。如果修改成距離safe Area的話,在每個機型上,就會自動幫我們做好適配了,不必再擔心被home條遮擋的問題。
總結(jié)一下
iPhoneX發(fā)布后,很想要,很想用,公司就是窮,不給你配置。所以,在模擬器上摸索了一下用storyboard自動布局,效果真的溜得飛起。可能以后習慣了storyboard,你會發(fā)現(xiàn)UI設(shè)計其實也挺好玩的。亂七八糟寫了一點適配的心得,希望能幫到大家。