Safe Area解析(二) —— 你為什么并不safe?(一)

版本記錄

版本號 時間
V1.0 2018.05.26

前言

Safe Area是iOS 9新出的,它的出現一定程度上解決了很多適配的問題,可以說解決了很多UI方面的問題,你再也不用擔心狀態欄是否被覆蓋,特別是iphone X出現以后,狀態欄和底部都留有和其他機型不同的高度,這給適配帶來更多的麻煩,但是Safe Area預留出來安全區域,可以讓你對UI的適配無后顧之憂。感興趣的可以看我上面寫的幾篇文章。
1. Safe Area解析(一) —— Safe Area由來及簡單使用(一)

Safe Area真的就安全嗎?

相信我這么問,那么答案就是不一定,它不一定就是安全的。

盡管是9系統出來的,但是對于10系統的適配,它頂部距離Safe Area頂部這個約束并不生效,這可能是蘋果的一個BUG,現在還未解決,直到前幾天做項目,其他操作系統直播間內根視圖都沒問題,預留出來了狀態欄,但是對于7plus 10系統的手機,狀態欄的位置沒有預留出來,也就是10系統的Safe Area頂部這個約束是沒有生效的,具體如下圖所示:

根視圖的約束

運行起來,看效果

可以看見,頂部狀態欄的位置并未預留出來,頂部約束沒有生效。我嘗試其他系統的手機就都是正常的。


問題解決

有了10系統Safe Area這個問題,那么就要解決。

1. 解決思路

可以按照下面的步驟解決這個問題:

  • 為跟視圖的頂部再設置一個約束,距離他的父視圖間距設置為20,并將該約束拖到VC中,判斷如果是iphone X就設置為44,優先級設置為1000(這個是默認的不用你修改什么)。
設置頂部距離父視圖的約束
  • 將原先頂部距離Safe Area的約束優先級降低為750或者更低,設置好的約束,如下所示。

2. 實現效果

經過上面幾步,問題就解決了,可以很好的實現了效果,具體如下所示:

實現效果

可以看見,預留出來上面狀態欄的位置,用7plus 10系統手機進行的驗證。同時,也用其他機型進行驗證,結果還是正常的,沒有問題。

對于這個BUG,我感覺蘋果是知道的,但是因為什么不修改我也不清楚,但是影響了Safe Area這個適配利器在UI適配上的作用,讓其性能大打折扣,希望可以早點修改過來,可以讓設計人員減少勞動,或者更佳的設計體驗。

后記

本篇主要講述了在工作中遇到的一個Safe Area頂部約束不起作用的一個蘋果BUG,感興趣的給個贊或者關注,謝謝~~~~

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容