2014-08-28 25 views
0

在閱讀大量信息後,我決定在該主題上編寫新問題,並嘗試成功,但沒有結果。接口生成器問題中的UIScollView和自動佈局問題

該任務看起來微不足道。我有ScrollView。它有一個UIView類型的子視圖(我們稱之爲ContentView)。內容視圖又有2個類型爲UIView的子視圖(我們稱之爲ViewA和ViewB)。

-ScrollView 
    -ContentView 
     -ViewA 
     -ViewB 

ScrollView有4個約束,它將它綁定到superview的所有邊。 ViewA有3個約束(對ContentView) - 頂部,左側和右側。 ViewB有4個約束(ContentView) - 底部,左邊,右邊和高度。 ViewA的底部和ViewB的頂部之間還有一個限制。我的想法是,我將在運行時更改ContentView的框架,ViewA和ViewB的大小和佈局會相應地自動進行。

嗯,它不工作。我試圖從ContentView到ScrollView中添加不同的約束,嘗試了它們。得到不同的結果,但沒有一個是正確的。例如,ContentView對ScrollView有4個約束(頂部,底部,左側和右側)。我在運行時設置了ContentView的Frame。但是,它會被重置,並且最終,ContentView框架基本上具有ViewB(它具有高度約束)的高度。

非常感謝您的幫助。

回答

0
  1. 請勿設置內容視圖的框架。
  2. 您需要添加一個約束viewA以這樣的方式,將定義其高度。
+0

我是不是這樣加入? ViewA的高度應根據ContentView大小自動計算,並考慮到ViewB的固定高度。否則,我不明白在這個例子中約束的目的。對我而言,他們應該在運行時調整視圖大小。否則,我可以簡單地設置所有框架。內部視圖也有寬度。根據你的話,我必須設定它。但是,我的想法是,我將在運行時(ContentView)設置一個幀,並且其中的所有內容都將相應地佈局 – Ingweland 2014-08-28 19:57:54

+0

使用帶有scrollView的Auto Layout絕對不是直觀的,我建議閱讀Apple關於該主題的技術說明:https: //developer.apple.com/library/ios/technotes/tn2154/_index.html閱讀「純自動佈局方法」一節。如果你這樣做,你將能夠擁有動態佈局。關鍵要記住的是,scrollView中的每個視圖都需要顯式約束來定義其寬度/高度或具有固有大小(如UILabel)。 – 2014-08-28 20:35:31

+0

已經多次閱讀。試圖理解它。最後,我想在IB中設置所有東西不是一種選擇。 – Ingweland 2014-08-28 20:41:50