我正试图在所有程序性约束条件下变得更好。
我创建了一个界面表示我想做的事情,以确保一切都变成蓝色并且在运行时没有出错。
在界面构建器中,我创建了一个UIView,将比率设置为1:1,顶部锚点100和底部锚点450,并对其进行水平约束。
效果很好。
现在我删除了所有这些并通过代码
完成我认为这应该与IB版本相同......
let testView = UIView()
view.addSubview(testView)
testView.backgroundColor = .red
let testViewTopConstraint = testView.topAnchor.constraint(equalTo: view.topAnchor, constant: 100)
let testViewBottomConstraint = testView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 450)
let testViewCenterXConstraint = testView.centerXAnchor.constraint(equalTo: view.centerXAnchor)
let testViewAspectConstraint = NSLayoutConstraint(item: testView,
attribute: .height,
relatedBy: .equal,
toItem: testView,
attribute: .width,
multiplier: (1.0 / 1.0),
constant: 0)
NSLayoutConstraint.activate([testViewTopConstraint, testViewBottomConstraint, testViewCenterXConstraint, testViewAspectConstraint])
testView.translatesAutoresizingMaskIntoConstraints = false
当我运行它时,红色方块变成一个延伸到末端的矩形(可能超出)。
我玩过编程限制。如果我要添加一个主要约束我完全没问题,它似乎是我的底线约束总是让我感到困惑。
我的底部约束有什么问题? 或者我做错了什么?
答案 0 :(得分:1)
有一些事情,但要在这里回答你的特定问题,你只需要添加一个 - 到450常量
let testViewBottomConstraint = testView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -450)
您还可以通过添加更多锚点来省略NSLayoutConstraint。