我目前正在学习如何以编程方式创建布局约束。所以到目前为止,我认为 Constant 是UIElement的大小(例如高度或宽度)的值,而 Multiplier 是我们需要与SuperView相乘的值,例如
titleLabel.widthAnchor.constraint(equalTo : thumbImageView.widthAnchor, multiplier : 0.5)
因此,根据上面的代码,
if thumbImageView.width = 40(constant), the width of titleLabel = 20(halved by multiplier)
addConstraint(NSLayoutConstraint(item: subtitleTextView, attribute: .height, relatedBy: .equal, toItem: self, attribute: .height, multiplier: 0, constant: 20))
现在在上面的代码中,常数为20,乘数为0,所以结果将为零,对吗?但是它显示的是20号文本视图。
因此,当我更改乘数为1且常数为20的代码时,它的绘制超出了单元格。
addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .height, relatedBy: .equal, toItem: self, attribute: .height, multiplier: 1, constant: 20))
我的问题是:
1。乘数和常数之间的关系和区别是什么? 2.我有些理解,如果在其中提到两种观点 约束,乘数不能为零。这是对的吗? 3.为什么文本视图沿单元格拖动?
答案 0 :(得分:2)
答案 1 :(得分:2)
自动布局约束的工作就像数学函数一样
item1.atribute = Multiplier * item2.atribute + constant
以您为例:
titleLabel.width = 0.5 * thumbImageView.width + 0
如果未指定乘数和常数,则使用默认值。乘数的默认值= 1,常数= 0
请查看苹果的自动布局指南以获取更多详细信息:AutoLayout Guide of Apple