可以在锚点和中心使用乘法器吗? 对我来说,至少对于一开始来说,这根本没有任何意义,但后来我进行了深入研究,发现这确实有效。
所以让我陷入困境。 请告诉我我是否错了。
1)以1的乘数开头=尾随?我已经看到,乘数为0.1的开头表示内部为10%(基于宽度)。
2)中心乘以2 =尾随?通过假设中心表示尾随/ 2或前导* 0.5?
据我了解,乘数实际上是基于轴乘以宽度/高度。
这意味着以下约束是等效的吗?
C1.axis = C2.axis * M + C <=> C1.axis = C2.axis + axisLength * M + C?
所以乘数只是将宽度或高度的倍数相加?
更新:
因此,要从接受的答案中清除信息。
CenterX_or_Y = Width_or_Height / 2
Trailing - Leading = Width (in therms of size)
Bottom - Top = Height (in therms of size)
当您在前导/尾随/顶部/底部实际使用乘数时,实际上是在上述尺寸(宽度或高度)上使用乘数。
答案 0 :(得分:1)
在大小上使用乘数非常简单...我希望子视图为其视图的宽度的80%,因此我只需使用0.8
的乘数设置等宽
但是,在前导/尾随/居中/等位置使用乘数时,可能会造成混淆。
来自Apple的Auto Layout Guide:
例如,让我们说:
Red Leading is set to Blue Trailing, Constant 8, Multiplier 1
Blue Leading is at 0, and width is 100
Red's Leading will be (1.0 x 100) + 8 = 108
不过,要清楚一点,蓝色的拖尾与其宽度不同。
假设Blue的领先优势在50
?如果其宽度为100,则尾随将为150,因此:
Red's Leading will be (1.0 x 150) + 8 = 158
现在,将Blue's Leading放回0
,但我们将乘数更改为0.75
Red's Leading will be (0.75 x 100) + 8 = 83
如果Blue的Leading为50,则Blue的Trailing为150:
Red's Leading will be (0.75 x 150) + 8 = 120.5
只需参考公式即可使事情变得简单
item1.attribute = multiplier * item2.attribute + constant
这是一个直观的例子。所有标签均为100x40
,每个绿色标签均受约束为Green.Leading = Blue.Trailing + Constant:8
对于#1集,乘数为1.0
-对于#2,#3和#4集,乘数为0.5
。
第1组,蓝色的前导为0
,绿色的乘数为1
...这是通常看到的,很明显-绿色比蓝色的尾数高8点,即(Blue.Leading + Blue.Width),或
1.0 * (0 + 100) = 100
100 + 8 = 108
第2组,蓝色的行距仍为0
,但绿色的乘数为0.5
...因此,绿色距蓝色的尾随距离为8点,即(Blue.Leading + Blue.Width), * 0.5或
0.5 * (0 + 100) = 50
50 + 8 = 58
第3组,蓝色的前导现在为80
,绿色的乘数仍为0.5
...因此,绿色距蓝色的尾随为8点,即(Blue.Leading + Blue.Width), * 0.5或
0.5 * (80 + 100) = 90
90 + 8 = 98
组4看起来很奇怪。蓝色的行距现在为200
,绿色的乘数仍为0.5
...因此,绿色距蓝色的尾随距离为8点,即(Blue.Leading + Blue.Width),* 0.5或>
0.5 * (200 + 100) = 150
150 + 8 = 158
我们看到,在第4组中,绿色最终变成了蓝色的左侧,这是正确的,但并非所有直观的方法。