2013-09-23 26 views
19

我創建了一個新的視圖控制器,然後添加了一個滾動視圖作爲根視圖的子視圖,並將「Leading/Top/Trailing/Bottom Space to Superview」設置爲0,滾動視圖將完全填充其父項。UIScrollView的兒童尾隨空間限制錯誤

然後,我添加一個按鈕作爲滾動視圖的子,具有「上海華」(即,滾動視圖)的15空間的限制。因此,我期望按鈕的間距爲15到頂部/左/右邊界,滾動視圖的內容在'按鈕底部+ 15'處結束。然而,按鈕的寬度是不正確的(在Xcode測試5界面生成器,iOS的6/7模擬器):

Example

如果我約束帶「相等寬度按鈕的SuperView它甚至不工作「!仍然不佔據全寬。

我該如何解決這個問題?

+0

這裏看到答案:http://stackoverflow.com/questions/16843633/ios-autolayout-with-uiscrollview-why-does-content-view-of-scroll-view-not-fill – asdfasdfads

回答

48

找到了一個很好的解決方案:)這種行爲的原因是滾動視圖使其內容視圖大小適應其子視圖實際需要的大小,並且不會自動填充寬度/高度。如果應該填充寬度,則滾動視圖必須至少包含一個視圖,以填充屏幕的寬度。

通過這些步驟,我添加了一個視圖,它具有與滾動視圖(滾動視圖本身,而不是其內容視圖區域)等寬的視圖,從而導致我的滾動視圖最終展開爲全角,因爲我還添加了約束「查看0/0/0/0的空間」到滾動視圖。

  • 假設與一個根查看
  • 添加滾動視圖,約束集 「空間的SuperView頂部/左/右/底= 0/0/0/0」 就可以了
  • 添加空視圖控制器你的用戶界面,但滾動視圖,你想和設置約束也希望如何
  • 添加一個新的視圖,其重命名爲類似「確保滾動視圖填充寬度」,有以下限制
    • 前/後/頂空間superview(這是滾動視圖!)= 0
    • 高度0因爲我們希望它不可見,因爲視圖只是幫手
    • 重要部分:選擇此視圖和層次結構中的滾動視圖,並將它們限制爲等寬。由於滾動視圖受限於其超視圖,它將會收到一個寬度。然後這個約束確保了滾動視圖的內容視圖也是(至少)那麼寬。
+8

等寬!太優雅了! –

+0

要清楚,「添加新視圖」需要是滾動視圖的子項 – theblindprophet