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

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

实际布局:

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

不完美:

【问题讨论】:

    标签: ios swift xcode autolayout nslayoutconstraint


    【解决方案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):

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 2015-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多