【问题标题】:How to split UIView into equal parts using autolayout?如何使用自动布局将 UIView 分成相等的部分?
【发布时间】:2014-05-14 22:51:59
【问题描述】:

我正在努力寻找允许我将 UIView 的内容拆分为相等部分的逻辑规则或约束。

更具体地说,想象一个初始宽度为 300pt 的 UIView。然后让我们放置三个子视图并设置它们,使每个子视图的宽度有效地为 100,origin.x 将为 0、100 和 200。一个子视图将构成父视图的三分之一。 如果我调整超级视图的大小,所有三个子视图都会在水平方向变宽,但它们会保持相同的大小。

有什么帮助吗?

【问题讨论】:

    标签: ios objective-c uiview autolayout


    【解决方案1】:

    相等的宽度/高度约束将为您做到这一点。

    在视觉格式中,约束是:

    |[view1][view2(==view1)][view3(==view1)]|
    

    左边的一个固定在superview的左边,右边的固定在右边,中间的一个固定在外面的两个上,三个都等宽。

    【讨论】:

    • 我在 IB 中复制了这个,但最终设置受限。
    • 我发现这是有问题的,因为四舍五入的问题!
    【解决方案2】:
    1. 放置您的视图。
    2. 放置和定位三个子视图,每个子视图占宽度的三分之一。
    3. 按住 cmd 并单击每个子视图来选择所有三个子视图。
    4. 转到编辑器 > 引脚 > 宽度相等

    确保为子视图 x 和 y 位置设置约束。在您的情况下,您可以将最左侧子视图的前导空间固定到超级视图,将最右侧子视图的尾随空间固定到超级视图(编辑器 > 固定 > 前导/尾随空间到超级视图)和垂直间距,具体取决于您的情况。

    【讨论】:

    • 如果是3个项目,除非你在容器对齐中添加水平,否则它不起作用
    • 它确实有效。正如我所说的“确保为子视图 x 和 y 位置设置约束”。有无数个 y 对齐案例,我无法全部列出。
    【解决方案3】:

    在 iOS 9 中,Apple 引入了 StackView。在 UIViewController 中拖动一个 Vertical StackView。从 StackView 内的 Object 库中拖出 3 个 UIView。 选择 StackView 然后在属性检查器中将 Distribution 设置为 Fill Equally 并将间距设置为 5 或任何您想要的。更改所有三个视图的颜色,您将看到它们均分为三部分。

    结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 2020-02-02
      • 2018-05-24
      • 1970-01-01
      相关资源
      最近更新 更多