在锚点和中心使用乘数可以吗?
对我来说,至少对于一开始来说,这根本没有任何意义,但后来我进行了深入研究,发现这确实有效。
所以让我陷入困境。
告诉我我是否错了。
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)
当您在前导/尾随/顶部/底部实际使用乘数时,实际上是在上述尺寸(宽度或高度)上使用乘数。
最佳答案
在大小上使用乘数非常简单...我希望我的子视图为其视图的宽度的80%,所以我只用0.8
的乘数来设置等宽
但是,在前导/尾随/居中/等位置使用乘数时,可能会造成混淆。
从苹果的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的Leading在
50
上?如果其宽度为100,则尾随将为150,因此:Red's Leading will be (1.0 x 150) + 8 = 158
现在,将Blue的Leading重新设置为
0
,但让我们将Multiplier更改为0.75Red'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,蓝色的Leading是
0
,绿色的Multiplier是1
……这是通常看到的,很明显-绿色是蓝色的尾数的8点,即(Blue.Leading + Blue.Width),或者1.0 * (0 + 100) = 100
100 + 8 = 108
第2组,蓝色的Leading仍然是
0
,但是绿色的Multiplier是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组看起来很奇怪。 Blue的Leading现在为
200
,Green的Multiplier仍为0.5
...因此Green距离Blue的尾随为8点,即(Blue.Leading + Blue.Width),* 0.5或0.5 * (200 + 100) = 150
150 + 8 = 158
如我们所见,在第4组中,绿色最终变成了蓝色的左边,这是正确的,但并不是所有的直观性。
关于ios - 在 anchor 上实际使用乘数可以吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52780013/