關於iOS的autolayout中導覽列的疑問

來源:互聯網
上載者:User

標籤:

在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中導覽列的疑問

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.