我真的希望我可以讓自己的頭部繞過自動佈局。似乎每當我閱讀關於事情應該如何工作的抽象描述時,都是有道理的,但每當我真正嘗試並將其付諸實踐時,總是會引起大量頭痛。所以,如果已經有一個答案在這裏,但我找不到一個道歉。使用AutoLayout並確保父視圖的邊界在調整大小時適合子視圖
問題應該比較簡單。我有一個容器視圖,其中包含兩個子視圖,猙獰的顏色最大的可讀性:)如下所示:
底部(黑色)認爲,應該保持它的當前大小和維護之間的間距和紅色視圖,以及它本身和黃色視圖底部之間的間距。 紅色視圖我希望能夠動態改變其高度,導致黑色視圖相應地向上/向下移動,同時黃色視圖調整大小以適應紅色+黑色視圖。
對於黑色的看法,我已經添加了約束:
- 將高度設置爲94
- 引腳前端和後端空間的SuperView
- 設置在頂部空間,紅色的看法51.
- 集底部空間到黃色視圖在20
我想了解什麼看似神祕的約束條件需要添加,以便在紅色視圖垂直調整大小時,黑色視圖保持其距紅色視圖的當前距離並保持其大小,而外部容器視圖相應地調整大小,使其包含紅色視圖+黑色視圖+視圖之間的垂直間距。
對於紅色視圖,我添加了約束來將頂部,左側和右側的間距固定到超級視圖,但沒有運算出垂直約束。目前,我有一個約束高度= 114,優先級爲999,約束高度> = 114,優先級爲1000,這將確保視圖總是至少114高度...
當我嘗試手動設置紅色視圖的高度時,樂趣開始....我在視圖中添加了一個按鈕,當按下按鈕時,我手動設置紅色視圖的邊界。 (紅色視圖的默認高度爲114):
CGRect bounds = self.redView.bounds;
bounds.size.height = 300;
self.redView.bounds = bounds;
當我運行這一點,並按下按鈕,在視圖去從這樣的:
要這樣:
對我來說這沒有任何意義。爲什麼會導致:
- 紅色視圖的Y原點正在改變?特別是當有一個「必需」的限制,告訴它從黃色視圖的頂部停留20點。
- 紅色和黑色視圖之間的間隔細分,儘管它們之間的間距約束是「必需的」?
- 黃色視圖的垂直尺寸不變。同樣,儘管紅+黑之間的間隔,我已經嘗試了幾乎所有的組合,我可以想到的抗壓和內容擁抱優先........
我真的很想了解這一點,所以如果有人能夠解釋需要額外的常量限制/改變,但更重要的是爲什麼他們是必需的,因爲對我來說,佈局系統如何提供它的答案似乎並不清楚。
任何澄清非常讚賞。預先
感謝(以上所有代碼都在iOS 7上運行,並在Xcode 5.0.2構建)。
所以總結一下。所有你的約束是靜態的/依賴的,除了紅色的視圖嗎?,你可以嘗試取消redview的高度限制嗎?當你按下按鈕時,你會這樣做:heightOfRedviewConstraints.constant = 100;我真的很想幫助你,但我現在不在我的xcode上。 hehehe – Bordz