2015-11-29 73 views
3

我已經閱讀了很多關於ScrollViews的垂直滾動手冊/教程,但還沒有想出如何解決我的問題到目前爲止。UIScrollView與Autolayout Ambigous高度

您可以在這裏看到我的滾動型可視化計劃:

ScrollView plan

最有用的答案就在這裏,在計算器上: https://stackoverflow.com/a/30282707/3718319

Accodring它,我做了如下:

我的ScrollView(在我的屏幕截圖上顯示爲紅色)已獲得0,0,0,0個約束,並且與ViewController的視圖具有相同的寬度。在我的ScrollView中,我製作了一個ContentView(屏幕截圖上的橘黃色),其中包含(屏幕截圖中的makred綠色):

1)帶有恆定高度並固定頂部/左/右ContentView的ImageView。

2)以恆定高度查看並固定頂部到ImageView,向ContentView左/右移動。

3)以恆定的高度查看並固定頂部到上方的View,ContentView的左側/右側。

4)的TextView釘扎頂部到它上面的視圖,左/右對內容查看和釘扎底部到內容查看。

所以,所有的垂直約束條件都會被設置,並且我的可滾動內容高度應該根據文本視圖的高度而改變。那是我的目標。

但是我從故事板得到錯誤,告訴:需要約束條件:Y位置或高度。

你能幫我解決這個問題嗎?

謝謝!

回答

3

故事板引發這些警告的原因是因爲它無法計算滾動視圖的內容大小。在內容視圖中使用第一組約束時,它具有模糊的高度。

可以說例如所設置的每個高度約束100和釘扎約束具有20空間的值,內容視圖內的每個子視圖的幀將是這樣的:

  1. ImageView的(20,20,圖.WIDTH,100)
  2. 視圖(20,140,view.Width,100)
  3. 視圖(20,260,view.Width,100)
  4. TextView的(20,380,view.Width,??)

由於您的textView有頂部和底部約束,它的高度會有所不同,而且內容視圖的高度也會根據textView的高度而變化。

但是,textView也具有滾動功能,這將使它很難計算其與內容視圖相關的高度,而無需額外的約束。

由於您在textView中禁用了滾動功能,故事板不再有任何困難計算每個子視圖幀,這就是警告消失的原因。

可選地,您可以啓用textView的滾動功能並給它一個高度限制,這將給故事板提供足夠的信息來計算每個子視圖框架。

+0

謝謝,詳情。希望你的回答能夠幫助人們獲得UIScrollViews! – digitaljuice

+0

禁用滾動是這裏的關鍵 - 謝謝你的細節:-) – richsage

+0

我有同樣的問題,但我沒有TextView,我有一個標籤,固定頂部,左和右,但沒有底部作爲我的最後一個元件。釘住底部並調整內容視圖的框架解決了我的問題,滾動視圖現在完美地工作。 TKS! – gmogames

2

我剛纔發現,我不得不取消「啓用滾動」在我的文本框。這就說得通了。

我已經嘗試過它,但它並沒有幫助我在從頭開始創建故事板ViewController之前。