2014-02-20 132 views
0

我有一個UITableViewController在一個故事板中,我作爲一個子視圖添加到一個UIViewController中的獨立UIView,我的最終目標是讓UITableView刷新狀態欄,以便滾動到狀態欄(不通過它與衝突)。Autolayout添加額外的填充

我已經配置了單獨的UIView在垂直和水平方向都具有0的約束,但是如圖所示,我相信autolayout會在佈局中添加20px y偏移量。如果我刪除20px y偏移量(並將UIView大小設置爲整個佈局),最終會發生衝突。

20 offset

no offset

回答

0

我建議你設置你的視圖控制器如下。在IB中創建UIViewController並添加一個簡單的UITableView作爲其主視圖的子視圖。我幾乎從不使用UITableViewController,因爲它幾乎沒有附加值,但是它限制了您向表視圖添加子視圖。現在,您將表視圖的原點定位到(0,20),並將表視圖的頂部佈局約束設置爲頂部佈局指南而不是超級視圖。也許你應該打開接近IB中約束常數值的下拉菜單: Align to top layout guide 這樣你的表格視圖就會在狀態欄下開始。

但請注意,iOS 7設計指南建議您實際上將頂部條(導航欄和狀態欄)下的內容擴展。你應該創建一個20點半透明的背景png,將它放置在狀態欄下,並讓表格視圖在狀態欄下滾動。在這種情況下,您也不應忘記檢查視圖控制器的「調整滾動視圖插入」選項。

+0

謝謝!你可以推薦一種不使用UITableViewController的方式來添加刷新控件嗎? –

+0

你可以嘗試一些在這裏的問答的建議,例如http://stackoverflow.com/questions/12497940/uirefreshcontrol-without-uitableviewcontroller 否則,你要麼與您的原始視圖結構與容器視圖(在這種情況下設置將容器視圖的約束放在頂部佈局指南中),或者更改UI並在狀態欄下包含半透明背景 - 這樣您將與iOS 7的UI準則保持一致。 – MrTJ

+0

注意:如果您不希望你的內容僅在狀態欄下出現_initially_(即當表格視圖滾動到頂部時),足以將表格視圖的頂部內容插入設置爲狀態欄的高度。如果直接使用表格視圖控制器,則視圖控制器會自動爲您執行此操作,如果您在界面構建器中檢入vc的「調整滾動視圖插圖」選項。 – MrTJ