標籤:先來 pre add origin load 系統 real eai play
最近做iPhone X的適配,發現了一些規律,總體來說適配還是很簡單的
iPhone X 頂部的狀態列,也就是安全區距離頂部的高度為 44px;其他的iPhone都為 20px,
iPhone X安全區距離底部的高度為34px
在xcode9中增加了Safe Area
先來瞭解下
safeAreaLayoutGuide
首先我們看看什麼是safeAreaLayoutGuide
看起來複雜,其實很簡單,我歸納一下有幾點:
- 它是UIView的一個唯讀屬性,意味著所有UIView對象都有並且是系統幫我們建立好的
- 它繼承UILayoutGuide,有layoutFrame意味著它能代表一塊地區
- 它代表的地區避開了諸如導覽列、tabbar或者其他有可能擋住你這個UIView對象顯示的所有父view,意味著你的view對象只要相對另一個view的safeLayoutGuide做布局就不用擔心她被奇奇怪怪的東西擋住
- 對於控制器的view的safeAreaLayoutGuide,他的地區同樣避開了statusbar或其他有可能擋住view顯示的東西,我們甚至可以用控制器的additionalSafeAreaInsets屬性,來額外指定inset
- 如果view完全在父view的安全區域內,或者view不在視圖層級或螢幕上,那麼view的safeAreaLayoutGuide地區其實和view自身是一樣大的
safeAreaLayoutGuide是一個相對抽象的概念,為了便於理解,我們可以把safeAreaLayoutGuide看成是一個“view”,這個“view”系統自動幫我們調整它的bounds,讓它不會被各種奇奇怪怪的東西擋住,包括iPhone X的劉海地區和底部的一道杠地區,可以認為在這個“view”上一定能完整顯示所有內容。
以下綠色部分就是當前控制器view的safeAreaLayoutGuide地區
iphone X豎屏safeAreaLayoutGuide的bounds
iPhone X橫屏safeAreaLayoutGuide的bounds
iOS開發--利用Safe Area 適配iPhone X