如何自动设置约束以使 UIView 之间的距离一致?

Posted

技术标签:

【中文标题】如何自动设置约束以使 UIView 之间的距离一致?【英文标题】:How to automatic set constraints to make a uniform distance between UIViews? 【发布时间】:2018-05-19 12:17:37 【问题描述】:

我有一个 ViewController,它有一些组件,UILabels 和 UITextFields。我希望它们之间的距离是一致的,例如 2 点顶部和底部。到目前为止,我手动调整距离。我想知道是否存在一种自动进行此操作的方法。我尝试选择所有 UIViews 并设置约束,但不起作用。

实际布局:

当我尝试设置所有组件约束时:

不完美:

【问题讨论】:

【参考方案1】:

您不能通过选择所有组件来设置该恒定间距,但您可以将它们插入到具有分布 UIScrollView 的垂直 UIStackview 内(嵌入在 UIScrollView 中)并将项目之间的 spacing 设置为任何常量你想要的

-> mainView
   -> scrollView
      ->contentView   
         ->stackview
            ->lbl1
            ->txtf1

【讨论】:

我真的需要在UIScrollView 中嵌入这个吗?我有一个 UIView,但选项 Embed in -> StackView 不能。 是的,它必须在滚动视图内,因为项目的总高度可能超过某些设备的高度,我知道重新创建约束很愚蠢,但它比您当前的方法更容易,所以从对象库中插入它跨度> 你的答案是正确的,但另一个更简单。 请注意,仅 stackView 是不够的,您需要将其嵌入到滚动视图中以避免修剪问题 哦,是的,我注意到这个正在运行的应用程序在不同的屏幕中。【参考方案2】:

我希望它们之间的距离是一致的,例如 2 点顶部和底部。

对于这种工作UIStackView 做最好的工作。只需选择所有视图,检查Embed In Stack

然后指定Spacing的值(注意,有时你还需要更改Axis参数,但大多数情况下初始值对你的ui元素是正确的):

结果(所有标签之间的距离为8):

【讨论】:

以上是关于如何自动设置约束以使 UIView 之间的距离一致?的主要内容,如果未能解决你的问题,请参考以下文章

如何将两个按钮与 UIView 的中心等距对齐

UIStackViews 之间的自动布局最小间隙

如何将自动布局约束与 UIView 的 contentMode 属性结合起来

如何使用自动布局在 Swift 中为可重用的 UIView 设置约束?

如何对 UIView 上的自动布局约束引起的大小变化做出反应?

自动布局中的比例距离约束