在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就可以解決的簡單方法
哪位大神知道幫幫啊
在下願意用一顆蘋果來換!!!
answer:
在代碼中添加
self.edgesForExtendedLayout = UIRectEdgeNone;
就可以實現以導航條為起點高度來進行控件的約束,這個約束到底是什么意思還不是很清楚,以后再來補充
謝謝ashamp大俠的幫助!!!
