如何自动设置约束以使 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 的 contentMode 属性结合起来
如何使用自动布局在 Swift 中为可重用的 UIView 设置约束?