版本記錄
版本號 | 時間 |
---|---|
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,感興趣的給個贊或者關注,謝謝~~~~