作者:不是壞人的自來卷
鏈接:http://www.reibang.com/p/4d2342d87827
來源:簡書
著作權(quán)歸作者所有捉片。
每年蘋果爸爸都會在六月份的WWDC上發(fā)布有關(guān)下一代iOS的新特性和改動內(nèi)容平痰,開發(fā)者們有半年時間去準(zhǔn)備和兼容最新版本的iPhone和操作系統(tǒng)。
但是這一次為了在發(fā)布會前不泄露iPhone X的相關(guān)信息(實際上我們早就知道了=伍纫。=)宗雇,蘋果知道昨天才在官網(wǎng)上線了兼容全面屏的指導(dǎo)文檔和視頻。離iPhone X正式上市還有兩個月不到的時間莹规,我們需要為我們的app做哪些準(zhǔn)備呢赔蒲?
屏幕
我們在編碼中使用的是以point
為單位的屏幕尺寸(在不同設(shè)備上每個point對應(yīng)的實際像素點是不一樣的),iPhone 8的尺寸是375pt × 667pt @2x良漱,iPhone X的尺寸是375pt × 812pt @3x舞虱,也就是屏幕寬度是一樣的,但是高出了145pt母市,大概能多顯示20%的內(nèi)容矾兜。
注意iPhone X的屏幕素質(zhì)比較好,所以它需要加載較高像素的圖片患久,我們要提供必要的@3x資源椅寺。
另外由于iPhone X極高的長寬比,我們用作背景的圖片都需要重新設(shè)計蒋失,以保證比例適合返帕,內(nèi)容被裁切后效果仍然ok。
屏幕
status bar
iPhone X的狀態(tài)欄高度是高于之前所有的iPhone版本的篙挽,所以在代碼里寫死kStatusBarHeight == 20
的地方都會出錯荆萤!
也就是說,之前使用固定狀態(tài)欄高度來進(jìn)行布局的代碼都需要調(diào)整為動態(tài)布局方式铣卡,否則會出現(xiàn)內(nèi)容被遮擋的問題链韭。特別是圖中這個64邑闲,一直在iOS開發(fā)中常數(shù)般的存在,最后也被蘋果爸爸?jǐn)[了一道梧油。
此處不能寫死
關(guān)于狀態(tài)欄另外兩個需要注意的地方:
不要在iPhone X下隱藏狀態(tài)欄苫耸,一個原因是顯示內(nèi)容足夠高了,另一個是這樣內(nèi)容會被劉海切割儡陨。
現(xiàn)在通話或者其它狀態(tài)下褪子,狀態(tài)欄高度不會變化了,程序不需要去做兼容骗村。
高度不變
布局
iPhone X的布局有很多改變嫌褪,這是因為:
劉海的存在使橫屏的情況變得復(fù)雜
四個角變圓,需要防止內(nèi)容被切割
代替home鍵的長條(不知道官方名字叫什么胚股,homeBar
笼痛?)使得屏幕底部的布局需要調(diào)整
很多系統(tǒng)經(jīng)典的控件,比如TableView琅拌,Collection缨伊,Navigation,TabBar等都會自動適應(yīng)iPhone X(呵呵进宝,一定會有很多坑等著打補丁或者讓開發(fā)者擦屁股)刻坊。
Safe Area
iOS11引入了safeArea
的概念,用來替代之前的topLayoutGuide
和bottomLayoutGuide
党晋,safeArea用來描述視圖不被任何內(nèi)容遮擋的部分谭胚。它提供兩種方式:safeAreaInsets
或safeAreaLayoutGuide
來提供給你safeArea的參照值。
safeArea
在iPhone X上未玻,視圖的默認(rèn)safeArea如下圖所示:
safeArea2
可以看到灾而,底部的Bar還有四周圓角,都對這個safeArea進(jìn)行了切割扳剿。蘋果官方的設(shè)計指導(dǎo)是使用以safeArea為框旁趟,以layoutMargin為間距來進(jìn)行UI布局。
橫屏
在橫屏狀態(tài)下舞终,不能因為劉海的原因?qū)?nèi)容向左或者向右便宜轻庆,要保證內(nèi)容的中心對稱:
center2
另外癣猾,之前所有版本的iPhone tableView的cell和它的contentView的大小是相同的敛劝,開發(fā)者相對cell布局和相對contentView布局效果上不會有太大區(qū)別。
但是在iPhone X下纷宇,由于劉海和圓角的存在夸盟,tableView的contentView會被裁切,所以所有的布局都應(yīng)該被調(diào)整為相對contentView布局像捶,否則會越界:
tableView
一致性
蘋果對iOS中運行的app的一致性有很高的要求上陕,在iPhone X下桩砰,開發(fā)者不能自己去遮蓋圓角、狀態(tài)欄释簿,特別是底部的homeBar亚隅,即使你認(rèn)為劉海很丑,也許用戶看著看著就習(xí)慣了呢……
關(guān)于homeBar庶溶,它的顏色是會自動適應(yīng)的煮纵,保持著『時刻能找到但是又不那么顯眼』的狀態(tài),所以開發(fā)者不用去為它費心添加背景啊偏螺,強調(diào)啊啥的行疏,蘋果爸爸會十分感動然后拒絕掉你的……
交互
在交互方面,iPhone X最大的改變就是底部那個無時無刻不存在的homeBar
了套像,代替了原來home按鍵的功能酿联,系統(tǒng)級的任務(wù)切換和回到桌面 、夺巩、贞让,都是上滑這個細(xì)細(xì)的長條。
homeBar
所以蘋果爸爸的意思是:
趕緊把你自己寫的上滑手勢乖乖刪掉~
當(dāng)然如果app確實需要這個手勢柳譬,可以打開程序開關(guān)覆蓋系統(tǒng)的手勢震桶,但是這樣用戶就需要滑動兩次來回到桌面了,這會讓他們非常懷念home鍵征绎。
兼容
首先是iPhone X下的鍵盤和其他系統(tǒng)有區(qū)別蹲姐,會多出來那個很有趣的animateEmoji工具欄,所以在做鍵盤相關(guān)處理的時候要關(guān)注兼容性問題人柿,至少:高度不要寫死了……
iPhone X的認(rèn)證使用的是全新的faceId柴墩,所以如果app需要使用認(rèn)證相關(guān)api,需要根據(jù)設(shè)備區(qū)分touchId和faceId凫岖,可以看文檔江咳。
作者:不是壞人的自來卷鏈接:http://www.reibang.com/p/4d2342d87827來源:簡書著作權(quán)歸作者所有。感謝作者的及時分享