【问题标题】:Autolayout in IB: adding constraint related to a second viewIB 中的自动布局:添加与第二个视图相关的约束
【发布时间】:2014-10-15 13:36:09
【问题描述】:

小问题:我想添加两个约束,因此文本视图始终位于其他两个标签下方。我想通过 Interface Builder 来实现。

更长的解释。这是我的屏幕:

“Lorem ipsum”文本当前有一个约束,使其保持在红色“MAR-14”标签下方 8 像素处。我想添加第二个较低优先级的约束,使其也保持在位置标签(“阿姆斯特丹,荷兰”)下方 8 像素处。如何在 Interface Builder 中轻松添加此约束?

【问题讨论】:

  • 为什么需要两个约束?为什么不只限制“MAR-14”和“Lorem Ipsum”之间的垂直间距?
  • 有时位置会变成多行事务。单个约束是不够的。

标签: ios xcode5 interface-builder autolayout


【解决方案1】:

添加第二个约束与添加第一个约束非常相似。您可以按住 Control 从一个视图拖动到另一个视图并选择垂直间距约束。

首先,此新约束的优先级为 1000(必需),并将使用与画布的当前距离。您可以选择新的约束并调整这些属性。

不过,您希望这两个约束如何在实践中发挥作用?你想要什么结果?由于“MAR-14”标签的第一个约束优先级为 1000,并指定“相等”(而不是不等式),因此距离决定了间距、周期。较低优先级的约束永远不会重要。

如果您希望 Lorem ipsum 与 两者中的较低者有一定距离,那么您将需要一些约束。一种说法是 Lopem ipsum 的顶部大于或等于 MAR-14 的底部加 8。另一种说法是 Lorem ipsum 的顶部大于或等于阿姆斯特丹的底部加多少。然后第三个说它应该尽可能靠近 superview 的顶部:Lorem ipsum 的顶部等于 superview 的顶部。您将最后一个的优先级设置为低于要求,但可能仍然很高。但是,您希望它低于中间视图的垂直抗压优先级。 740可能不错。

【讨论】:

  • 太棒了,我首先不明白 Control-drag 给我的弹出窗口。是的,你关于三个约束的最后建议是正确的,这就是我想要的行为。
【解决方案2】:

如果我正确理解您的问题而不是您需要为 TextView 设置 2 顶级约束

1. Relavent to date label/button
2. with location  label but with low priority

您可以添加与位置标签相同的方式约束,而不是在属性窗口中双击屏幕右侧的约束,您将看到优先级降低优先级,因为您希望默认 1000 高优先级(降低到 800 或根据需要)。

或者在属性窗口右侧看到约束后,您将看到约束,因为您的屏幕截图显示单击工具图标,您将获得编辑选项转到优先级字段并减少 1000 以设置低优先级。

所以它会为你设置低优先级约束 4。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    相关资源
    最近更新 更多