Xcode 界面生成器。这些自动调整大小的蒙版设置有何不同?

Posted

技术标签:

【中文标题】Xcode 界面生成器。这些自动调整大小的蒙版设置有何不同?【英文标题】:Xcode Interface Builder. How Do These Autosizing Mask Settings Differ? 【发布时间】:2012-03-22 18:36:31 【问题描述】:

我现在很习惯在 IB 中使用自动调整大小的蒙版,但有两个自动调整大小设置我不清楚它们的不同之处:

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

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

一些上下文。使用这些设置的 UIView 子类是子子视图。设置 1 为我提供了我想要的行为 - 子视图与其父视图展开/收缩 - 而设置 2 以一种不明显的方式略有不同。

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

谢谢, 道格

【问题讨论】:

【参考方案1】:

设置 1: 视图将垂直调整大小,以便保留与父视图顶部的距离和与父视图底部的距离。基本上,视图会随着超级视图而增长和缩小;如果 superview 高 30 像素,这个 view 也会高。

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

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

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

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

【讨论】:

+1。 @dugla,Interface Builder 很好地解释了动画会发生什么。 优秀的例子回答【参考方案2】:

BJ 的回答真的很棒。但我认为他的例子是不正确的。

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

所以对于设置2,上边距无疑仍然是20px,但子视图和下边距都应该增长(150 - 20) / (100 - 20) = 62.5%。子视图高度变为 97.5px,底部边距现在为 32.5px。

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

【讨论】:

以上是关于Xcode 界面生成器。这些自动调整大小的蒙版设置有何不同?的主要内容,如果未能解决你的问题,请参考以下文章

使用 imagemagick 将垫调整大小的蒙版应用于裁剪调整大小的图像

5-20 将一个图层作为另一个图层的蒙版

使用自动布局在 NavigationBar 中自动调整 titleView 的大小

如何在 PHP 中检测图像上的蒙版区域?

Xcode 4.5 和 iOS 6.x 中的故事板方向支持?

界面生成器中的自动调整大小问题