隨着蘋果爸爸發布了 超牛叉的iPhone iPhone X 、iPhone XR、iPhone XS 、iPhone XS Max、開發者的適配工作要開始了。
停,🤚。
如果app 適配過 iPhone X、新機子不用怎么適配的了。
如果你之前的適配、都是寫死的。
建議你寫活吧。萬一,蘋果爸爸發布全面屏的iPhone呢?
先看看新手機嘛
新手機和 iPhone X相同、都是劉海屏、
適配劉海屏即可啦
如何適配劉海屏?
下圖是 iPhone X 對比其他機型的變化部分。iPhone X 和 iPhone 8 的寬度一致,在垂直方向上多了145pt,這就意味着首頁可以展示更多的內容,多出來的這20%的垂直空間,也許可以掛上更高價值的運營位。
一、StatusBar
iPhone X 上的 StatusBar 高度比之前的 iPhone 高一些,也就是說,我們如果寫死20pt高度的 frame 布局,都要大面積修(tu)改(xue)。在 iPhone X 上,通過打印 [[UIApplication sharedApplication] statusBarFrame] 可以看到,高度是44pt。
"如果你的 App 是隱藏 StatusBar 的,建議重新考慮。iPhone X 為用戶在垂直空間上提供了更多展示余地,且狀態欄中也包含了用戶需要知道的信息,除非能通過隱藏狀態欄帶給用戶額外的價值,否則蘋果建議大家將狀態欄還給用戶。"
另外還有一點,用戶在使用 iPhone X 打電話的時候,StatusBar 的高度也不會發生變化了。
二、屏幕底部
因為沒有了 Home 鍵,iPhone X 的底部是預留給系統功能的一個區域 - Home Indicator,這部分的高度是34pt。

iPhone X 的 Home Indicator 區域
“如果你的底部是 TabBar,那么 Home Indicator 背景會來自於 TabBar 背景的延伸,如果我們是一個 feed 流的頁面,那么底部會展示 feed 流的局部。”
意思是如果有 TabBar,那么那個區域會延展你的 barTintColor;沒有的話,就顯示透明的(參照 Setting)。之所以這么設計,是為了讓 indicator 清晰可見,告訴用戶你可以滑動這部分區域。所以蘋果不建議我們的 UI 元素過於靠近這部分區域。
三、適配進行
將原來的替換、審查每個界面、減去新增的高度
四、使用safeAreaInsets
現在沒有用到safeAreaInsets
來進行適配,是應為在IB界面里,safeAreaInsets
支持的最低版本為iOS 9.0,
我們還需要兼容之前的版本。所以這里沒有介紹這種方法。
至此、屏幕簡單適配結束啦。
有什么不恰當的地方,歡迎指正。
附上上述代碼
#define kStatusBarHeight [[UIApplication sharedApplication] statusBarFrame].size.height #define kNavBarHeight 44.0 #define kTopHeight (kStatusBarHeight + kNavBarHeight) #define kTabBarHeight ([[UIApplication sharedApplication] statusBarFrame].size.height>20.1?83.0:49.0) #define kTabBarArcHeight ([[UIApplication sharedApplication] statusBarFrame].size.height>20.1?34.0:0.0) //替換 64px →kTopHeight //替換 49px →kTabBarHeight