自动布局约束第一项和第二项如何工作?

时间:2018-08-17 11:53:50

标签: ios autolayout xcode6

如果我的UIView的前100个在左120个在右120在第一个项目和第二个项目之间的关系到底如何工作。浏览完Apple文档后,每个关系都有一个线性表达式,表达式为。

firstItem.firstItemAttribute == secondItem.secondItemAttribute * multiplier + constant

对于具有相关性

前导约束,使用此等式
  • 第一项安全区域。领先
  • 关系 =
  • 第二个项目= MyView.Leading
  • 恒定 120
用等式我理解的第一项和第二项。但是,当我进行 reverse 时,理解第二项常量更改为-120 对我来说是一个问题,并且更改后布局无效。为什么负面没有作用,它有什么用? Xcode 为FirstItem和SecondItem提供了一组属性,例如需要切换属性时的前导,居中,结尾。

1 个答案:

答案 0 :(得分:1)

  • 第一项= 安全区域。领先 ---这是安全区域的“左边缘”
  • 第二个项目= MyView.Leading ---这是视图的“左边缘”

因此,安全区域的“左侧” 到视图的“左侧” 等于120,或者您的视图为{{1 }}从安全区域(位于右侧)

  • 第一项= MyView.Leading ---这是视图的“左边缘”
  • 第二个项目= 安全区域。领先 ---这是安全区域的“左边缘”

因此,视图的“左侧” 到安全区域的“左侧” 等于120或安全区域的左侧是-120分, 来自您的视图(向左)。

如果您将-120更改为-120,则会将安全区域120 pts的左侧边缘或视图左侧边缘的右侧放置120 pts,将视图从屏幕向左推。

编辑:

为了更加清晰...

使用“ SafeArea.Leading-> myView.Leading”,您说的是“将myView的左边缘从安全区域的左边缘放120点”

当您将它们交换到“ myView.Leading-> SafeArea.Leading”时,您说的是“将SafeArea的左侧边缘减去放置在距myView左侧边缘120点的位置”


通常,在使用Interface Builder时,您不必理会订单……因为您在视觉上布置元素,并且IB知道如何定义约束。

在代码中设置约束时,更常见的是

例如,将一个子视图(红色)放在一个包含视图(蓝色)内,在所有四个侧面上都填充20点,如下所示:

enter image description here

您的代码可能看起来像这样:

+120

您会注意到,内部视图的 跟踪 底部 约束必须为负,因为您希望它们与容器视图的尾部和底部边缘相距20点。