標籤:
在storyBoard中,如果使用editor>embed>navigation controller 就可以給一個Controller添加一個導覽列控制器
這時候拖一個view上去,給這個view添加約束的時候,就會有top layout guide這個選項,這樣在橫屏,豎屏情況下,view都會緊貼導覽列顯示
但是在新建立一個file的時候,一起建立出來的xib卻沒有這種選項,要想讓view緊貼導覽列顯示,必須要將頂部約束成64,但是在橫屏狀態下就會在導覽列和view中間出現白條,因為橫屏狀態下狀態列會消失,導覽列會的hight會變小
我曾經嘗試使用sizeClass來解決這個問題,在4,5,6 ,6P, 6s上沒有問題,但是在6sP上,導覽列在橫屏的時候hight沒有變,瞬間想吐血
然後我想到了一個比較複雜的解決辦法:
利用automaticallyAdjustsScrollViewInsets這個屬性來自適應導覽列,具體做法是
先在xib上拖一個scrollView,然後將上下左右約束全都設定為0
然後再拖一個view到scrollView上,四個約束也全部是0,這時候會出現約束報紅,先不管,繼續對view添加約束
先添加一個水平約束
再添加一個height約束
這時候就發現約束報錯消失,這樣約束之後,scrollview的contentSize的寬就是螢幕的寬度,高是我們對view的height約束
當我們在viewWillAppear方法中添加self.automaticallyAdjustsScrollViewInsets = YES;
這樣導航條的位置就會自動被空出來,我們的控制項在view上進行約束就可以實現緊貼導航條的效果
最後的重點
雖然這個方法可以解決問題,但是很麻煩,添加的圖層也很多,不知道有沒有直接設定xib就可以解決的簡單方法
哪位大神知道幫幫啊
在下願意用一顆蘋果來換!!!
關於iOS的autolayout中導覽列的疑問