3

锚约束简化了添加约束,但情节提要中可用的乘数属性似乎不适用于所有类型的约束。

例如,根据此处的答案,您可以在视图中将标签居中:

view.addSubview(loadingLabel)
loadingLabel.translatesAutoresizingMaskIntoConstraints = false 
loadingLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
loadingLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true

但是,显然,虽然您可以设置长度约束的乘数,如下所示:

someView.heightAnchor.constraint(equalTo: heightAnchor, multiplier: 0.4)

您不能将类似的参数添加到 CenterX 或 CenterY 参数,可能是因为 Apple 认为这对某一点没有意义,尽管您可以在 Storyboard 中执行此操作,如本问题中所述。

将乘数添加到使点居中的约束以使该点与顶部的屏幕尺寸成比例的最佳方法是什么?

4

1 回答 1

3

您不能将乘数添加到 X 和 Y 轴约束的锚定方法中,它们仅适用于尺寸锚定。但是,NSLayoutContraint有一个设置乘数的选项。因此,例如,如果您想将标签设置在沿 Y 轴的超级视图的顶部和中心的中间,请执行以下操作:

view.addSubview(loadingLabel)
loadingLabel.translatesAutoresizingMaskIntoConstraints = false 
loadingLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
NSLayoutConstraint(item: loadingLabel, attribute: .centerY, relatedBy: .equal, toItem: view, attribute: .centerY, multiplier: 0.5, constant: 0).isActive = true
于 2020-07-22T20:50:24.093 回答