自动布局比例间距

Posted

技术标签:

【中文标题】自动布局比例间距【英文标题】:autolayout proportional spacing 【发布时间】:2014-08-21 22:26:02 【问题描述】:

我是自动布局的新手,在我想要比例约束之前我做得很好。如果有人可以向我解释如何使用自动布局(在 IB 上)重新创建这种行为,我想我会完全理解。我知道如何设置 y 约束,我不知道如何将 x 约束设置为与超级视图的大小成正比,以便在旋转或其他情况后更新 x 位置。我听说过使用虚拟视图并以编程方式执行某些操作,但如果可能的话,我希望在 IB 上有一个直接的解决方案。

【问题讨论】:

创建一个约束,其中第一项是你的object.width,第二项是你的superview.width,乘数是比例。理论上,它应该像在你的对象和超级视图之间拖动一样简单,然后编辑约束值。在实践中,根据布局的复杂性,您可能需要引入包含对象的中间(不可见)视图,并在该中间视图与其父视图之间使用约束。试试这个,然后用一张图片来编辑你的问题,说明什么是错误的,什么是正确的。 【参考方案1】:

您说您正在寻找一种直接的方法来执行此操作。但是你已经忽略了最直接的方法。

在你的 superview 顶部添加一个视图,并使其高度与 superview 的高度成比例。

现在添加您的视图,使其直接位于之前的视图旁边。

隐藏“spacer”视图。

完成。无需代码。

【讨论】:

【参考方案2】:

请不要添加空视图。只需将中心与 Y 对齐,然后调整比率。例如:3:2 将是 75% 的边距。

【讨论】:

以上是关于自动布局比例间距的主要内容,如果未能解决你的问题,请参考以下文章

自动布局问题 - 垂直间距

自动布局 - 为啥“垂直间距”有时会附加到视图的另一侧?

如何在代码中获取自动布局中使用的标准间距值?

不遵守自动布局底部间距约束

使用自动布局等间距视图

Swift - UICollectionView:如何在标题中自动布局标签间距