乘以"领先的空间"在autolayout中

时间:2018-01-24 16:56:12

标签: ios autolayout

考虑一下,

enter image description here

浅蓝色条带的宽度(比如说)10。

红色区块通过 领先度量 链接到浅蓝色条带。

假设该约束的常量为零。当然,红色块的x位置将是" 10" - 触摸浅蓝色条带。

假设该约束的常数为13.当然,红色块的x位置将为10 + 13 == 23.

现在将常数设置为零,因此红色块的x为10 - 触摸浅蓝色条带。

现在 - 假设您将常量上的 乘数 设置为1.7。 (同样,常量默认为零。)

测试似乎表明它是什么"倍增" 宽度 浅蓝色条带。

因此,使用1.7乘数,在示例中得到17。 1.5乘数,在示例中得到15。

enter image description here

实际上这实际上非常方便!但是,

  1. 有谁知道这是否确实如此?

  2. 这真的是奇怪的,也许是错误的,不稳定的或无证的行为?

  3. 是否记录在任何地方?

2 个答案:

答案 0 :(得分:1)

浅蓝色条带的宽度不是"乘以乘数乘以。它 x位置作为一个整体

在你的例子中,它们是相同的,因为你的浅蓝色条带的左边缘是零。但是将你的浅蓝色条带移到右边,看看会发生什么!例如:

enter image description here

在那个屏幕截图中,绿松石条是10宽,从左边是70。因此,如果乘数为0,则红色方块的x为80.但乘数为2,因此红色方块的x为160.

答案 1 :(得分:0)

我认为这是正确的,虽然可能不直观......

根据Apple的文档:

leading = multiplier * relationship + constant

这样:

Leading Space to: measure
Constant: 0
Multiplier: 1

评估为:

red.leading = 1.0 * measure.trailing + 0   // == 10

或:

red.leading = 1.0 * 10 + 0    // == 10

如果您使用:

Leading Space to: measure
Constant: 0
Multiplier: 1.5

你得到:

red.leading = 1.5 * measure.trailing + 0  // == 15

或:

red.leading = 1.5 * 10 + 0    // == 15

参考:https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/AnatomyofaConstraint.html