在Storyboard中,如何讓view從狀態(tài)欄頂部開始布局

Storyboard自動布局中遇到的問題

做項目時,需要一個頁面隱藏Nav,tableView從狀態(tài)欄頂部開始布局,可是自動布局過程中,tableView總是從statusBar下面開始布局(頂部總是覆蓋不了狀態(tài)欄)。后來我發(fā)現(xiàn)了問題,找到了解決方法。

先說一下我的解決方法

1.在storyboard中,選中viewController,在右側屬性欄找到“Adjust Scroll View Insets”選項,取消勾選此項。
2.為tableview布局添加約束時,點擊數(shù)值右側的向下箭頭,選擇“View(current distance = 0)”,不要選“Top Layout Guide(current distance = 0)”

關于Top Layout Guide和Bottom Layout Guide

原來自動布局時,是可以選擇你的約束是基于superview還是layout guide的。網(wǎng)上關于layout guide的描述如下:

Top Layout Guide用于自動布局的輔助,在Storyboard中可以看到Top Layout Guide作為ViewController的屬性存在,也就是topLayoutGuide,官方文檔對這個屬性的Discussion是:
topLayoutGuide屬性表示不希望被透明的狀態(tài)欄或導航欄遮擋的內容范圍的最高位置。這個屬性的值是它的length屬性的值(topLayoutGuide.length),這個值可能由當前的ViewController或這個ViewController所屬的NavigationController或TabBarController決定,有如下情況:
一個獨立的ViewController,不包含于任何其他的ViewController。如果狀態(tài)欄可見,topLayoutGuide表示狀態(tài)欄的底部,否則表示這個ViewController的上邊緣。
包含于其他ViewController的ViewController不對這個屬性起決定作用,而是由容器ViewController決定這個屬性的含義:
如果導航欄(Navigation Bar)可見,topLayoutGuide表示導航欄的底部。
如果狀態(tài)欄可見,topLayoutGuide表示狀態(tài)欄的底部。
如果都不可見,表示ViewController的上邊緣。
這部分還比較好理解,總之是屏幕上方任何遮擋內容的欄的最底部。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容