2017-11-25 167 views
1

我必須在視圖控制器中放置幾個​​視圖,運行時應該看起來像這樣。在UIScrollView中設置視圖的內容大小

enter image description here

最初白色視圖應該部分地覆蓋在底部的藍色視圖等中示出的圖像中藍色視圖應該保持放置,而底部的白色視圖可以在藍色視圖上滾動。

我將藍色視圖添加到視圖控制器的主UIView。然後在藍色視圖頂部添加一個UIScrollView,並將白色視圖添加到滾動視圖。

現在我收到了可怕的ambigeous內容大小錯誤。我已經固定了所有四面的滾動視圖。然後在白色視圖中添加前導,底部和尾部約束。然後我嘗試在白色視圖中添加頂部約束,但錯誤仍然存​​在。我也爲白色視圖添加高度約束無濟於事。

可能很難想象我的設置,因此我還添加了演示項目here

回答

0

我爲您設置了約束here

說明: 由於您的scrollView不知道其內容(白色視圖)的寬度和高度,因此您將獲得模糊的內容大小。

我將頂部,寬度和高度約束添加到白色視圖。這樣你的scrollView知道它的內容寬度,並且只會垂直滾動。至於內容高度 - 你可以在代碼中更改heightContstrait的常量,或者如果對白色視圖的子視圖正確使用自動佈局,則可以完全刪除高度限制。

+0

謝謝。這確實有效。不過,我將設置頂部約束設置爲白色視圖時遇到了一個小問題。因爲我已經使藍色視圖的高度動態化了。它需要6/10的主要觀點。所以它會在每個屏幕尺寸上看起來成比例。但是,一旦我將白色視圖的頂部約束設置爲超級視圖,無論藍色視圖的高度如何變化,白色視圖都保持不變。有沒有辦法動態改變白色視圖的頂部約束? – Isuru

+0

你可以嘗試連接topConstraint到插座,然後在代碼中(viewDidLayoutSubviews)將其常量設置爲例如藍色視圖高度的一定比例:topConstraint.constant = 0.75 * 6 * view.frame.size.height/10;或者直接使用blueView的插座:topConstraint.constant = 0.75 * blueView.frame.size.height –

+0

明白了。謝謝 – Isuru

0

將滾動視圖下的藍色視圖。並設置scrollviews內容插入,使您的白色視圖不顯示在頂部,但有一定的空間。現在開始時,您會看到藍色的白色視圖,並在滾動時覆蓋藍色視圖。關於大小錯誤,scrollview最初需要知道它的內容大小。我假設你的白色視圖是表格視圖,因此將其底部約束設置爲零。如果你想讓藍色大小在滾動時改變它的大小,比如它的頭像或其他東西,那就有點不同了。您應該在uiscrolldelegate上滾動事件,並相應地更改藍色視圖高度

相關問題