在Auto Layout中,指定宽度和高度的约束取决于具体情况。有些情况下,可以使用其他约束来推导出视图的尺寸,而不必显式指定宽度和高度的约束。例如,当视图中包含文本,并且需要让文本尽可能地自适应视图的宽度时,可以使用以下代码:
label.numberOfLines = 0
label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.5
label.textAlignment = .center
label.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
label.topAnchor.constraint(equalTo: view.topAnchor, constant: 20),
label.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
label.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20),
label.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -20)
])
在这个例子中,我们没有显式指定label的宽度和高度约束。相反,我们使用了“numberOfLines”,“adjustsFontSizeToFitWidth”,“minimumScaleFactor”和“textAlignment”等属性来让文本尽可能地自适应视图的宽度和高度。通过指定“translatesAutoresizingMaskIntoConstraints = false”,我们告诉Auto Layout我们会自己添加约束。
需要注意的是,在某些情况下,需要显式指定宽度和高度的约束,例如对于自定义视图或者需要严格控制尺寸的场合。