【发布时间】:2021-10-18 05:06:07
【问题描述】:
我正在开发一个 Swift 项目,但我不清楚以编程方式制作 UI 的一件事。 我尝试在屏幕上显示一个简单的 UIView。
lazy var container: UIView = {
let view = UIView(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
view.backgroundColor = UIColor.systemImageGray()
view.layer.cornerRadius = view.layer.bounds.width / 2
view.clipsToBounds = true
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(container)
setupConstraints()
}
func setupConstraints() {
container.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
container.topAnchor.constraint(equalTo: self.topAnchor, constant: 14),
container.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -14),
container.widthAnchor.constraint(equalToConstant: 30),
container.heightAnchor.constraint(equalToConstant: 30)
])
}
上面的代码运行正常,但是由于我设置了两次with和height,感觉是多余的,比如UIView(frame: CGRect(x: 0, y: 0, width: 30, height: 30))在setupConstraints中设置宽高约束。
由于我在UIView的frame中设置了宽度和高度,我以为我不需要在setupConstraints中设置宽度和高度约束,但是除非我再次添加宽度和高度约束,否则它不会显示视图。所以在这种情况下,为什么我不能在 UIView(frame: CGRect(x: 0, y: 0, width: 30, height: 30)) 中设置宽度和高度,而且我还必须再次添加宽度/高度约束?
【问题讨论】:
标签: ios swift constraints