Xcode Interface Builder。这些自动调整遮罩设置有何不同?

时间:2012-03-22 18:36:32

标签: xcode ios5 interface-builder autosize

我现在很乐意在IB中使用自动调整大小的掩码,但有两种自动调整设置,我不清楚它们是如何区别的:

设置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以非显而易见的方式略有不同。

这两个设置之间的预期布局差异是什么?

谢谢,
道格

2 个答案:

答案 0 :(得分:22)

设置1: 视图将垂直调整大小,以便保留超视图顶部的距离和超视图底部的距离。基本上,视图将与superview一起增长和缩小;如果超级视图高出30个像素,那么这个视图也是如此。

设置2: 视图将垂直调整大小,以便保留与superview顶部的距离,并保留视图的比例高度。基本上,视图将与superview按比例增长;如果超级视图高出10%,这个视图也会高出10%。

注意这些在实践中有何不同。假设superview是100px高,子视图是60px高,顶部和底部有20px缓冲区。现在让我们将superview的大小调整为150px高。

  • 设置1 :子视图增长以保持20px的边距,变为110px高。
  • 设置2 :子视图增长50%(60px - > 90px)。上边距仍然是20px,但下边距现在是40px。

通常,您通常需要设置1中的行为。如果您有一个主/详细视图分割顶部/底部,您可能会使用设置2,并且您希望这两个部分与超级视图成比例增长。在这种情况下,您可以为两个视图提供灵活的高度,固定顶视图的上边距和底视图的下边距。

答案 1 :(得分:0)

BJ的回答非常棒。但我认为他的例子不正确。

  

假设superview是100px高,子视图是60px高,有   顶部和底部有20px的缓冲区。现在让我们调整superview的大小   150px高。

因此,对于设置2 ,最高保证金无疑仍为20px,但子视图和底部保证金均应增长(150 - 20)/(100 - 20)= 62.5%。子视图高度变为97.5px,底部边距现在为32.5px。

换句话说,在这种情况下,应保留子视图高度与下边距的比例。