2015-05-29 71 views
0

我有一個UIView 3 UIViews作爲它的子視圖。我已將這些子視圖的佈局約束設置爲固定高寬比。即如果屏幕尺寸改變,它們的寬度將會改變,但寬高比將始終相同。如何設置運行時計算的變量高度的佈局約束?

現在我也已經使UIView的寬度(屏幕截圖中顯示的紅色)隨着屏幕尺寸的變化而變化。 但我正在努力限制這個視圖的高度。我想要的是它的高度應該根據它裏面的子視圖的總高度來設置。

因爲如果屏幕寬度發生變化,子視圖的高度會發生變化,因爲我已經使其縱橫比保持不變。

截至目前,我已經使紅色超級觀點的高度固定。 但我希望它是根據裏面的所有子視圖的總高度變化。

這是我的viewcontroller和它的預覽的屏幕截圖。

enter image description here

正如你可以看到有是因爲紅色超級鑑於固定高度的剩餘一些空間。

到目前爲止我添加的約束條件如下。

主力紅軍的SuperView

Main Red SuperView

** 1日(上),第2(中),3日(下)子視圖分別**

enter image description here

+0

正如@Bannings在他的回答中所說的,刪除紅色視圖上的高度約束,並簡單地爲第三個視圖添加底部約束到紅色視圖。你與8 ^)的距離太近了。 –

回答

0

支持所有分辨率下的相同行爲。您需要按如下設置佈局。

紅查看 enter image description here

的UIView頂部

enter image description here

的UIView中東

enter image description here

UIView的底部

enter image description here

希望這有助於你。

+0

@DemonSOCKET,如果您對我的回答滿意,您可以加倍努力嗎?我知道這不是要問你的好東西,但依然如此。 –

1
  1. 如果您尚未完成紅色視圖的高度限制,請添加一個插座。

  2. 如果您在viewDidLoad中執行此操作,請在控制器視圖中調用layouIfNeeded。

  3. 調用每個子視圖,setNeedUpdateConstraints和layoutIfNeeded。

  4. 然後計算你想要的紅色視圖的高度(我會做3 * subview.frame.size.height + topPadding + bottomPadding),並設置紅色視圖的高度xconstraint常量。

  5. 在紅色視圖中調用setNeedUpdateConstraints和layoutIfNeeded。

3

您可以從第3個視圖添加底部約束到其超級視圖,然後您必須移除超級視圖的固定高度約束。

相關問題