2012-03-22 57 views
8

我現在使用IB自動調整大小面具很舒服,但也有我不清楚他們是如何打算不同的兩種自動調整大小設置:Xcode Interface Builder。這些自動調整屏蔽設置的方法有何不同?

設置1
Autosizing with both upper and lower anchors http://dl.dropbox.com/u/11270323/stackoverflow/autosize-mask-0.png

設置2
Autosizing with only uppper anchor http://dl.dropbox.com/u/11270323/stackoverflow/autosize-mask-1.png

一些背景。使用這些設置的UIView子類是子子視圖。設置1給了我想要的行爲 - 子視圖用其父視圖展開/合同 - 而設置2以非明顯的方式略有不同。

這兩個設置之間的預期佈局差異是什麼?

謝謝,
道格

回答

22

設置1: ,使得無論從上海華的頂部,並從上海華的底部的距離的距離將被保留該視圖將垂直調整。基本上,這種觀點會隨着超級觀點的增長而縮小;如果超視圖高30個像素,那麼這個視圖也是如此。

設定2: 使得來自上海華的頂部的距離是保存的視圖將垂直調整,和視圖的比例高度被保留。基本上,該視圖將按比例增加與超級視圖;如果超級觀點高了10%,這個觀點也會高出10%。

請注意這些在實踐中有何不同。假設超視圖高100px,子視圖高60px,頂部和底部有20px的緩衝區。現在我們將超級視圖調整爲150px高。

  • 設置1:子視圖成長保存20像素的利潤,成爲110px高。
  • 設置2:子視圖增長50%(60px - > 90px)。頂部邊距仍然是20px,但底部邊距現在是40px。

一般情況下,你通常要在設置1.您可以使用設置2,如果你有一個主/詳細信息視圖拆分頂部/底部,你想這兩部分與上海華成比例增長的行爲。在這種情況下,您可以將兩個視圖的靈活高度固定在頂視圖的頂部邊界和底部視圖的底部邊界。

+4

+1。和@dugla,Interface Builder在解釋動畫發生的事情方面做得很好。 – sch 2012-03-22 18:53:00

+0

確實如此。傑出的澄清BJ! – dugla 2012-03-22 20:08:34

+0

用例子的優秀答案 – Rinku 2014-06-12 12:07:50

0

BJ的回答真的很棒。但我認爲他的例子是不正確的。

假設超視圖高100px,子視圖高60px, 頂部和底部有20px緩衝區。現在讓我們調整超級視圖至 150px高。

所以對於設置2,上邊距無疑仍20像素,但子視圖和底餘量應均由(150 - 20)生長/(100 - 20)= 62.5%。子視圖高度變爲97.5px,底部邊距現在爲32.5px。

換句話說,在這種情況下應保留子視圖高度與底部邊距的比例。

相關問題