嘿,我有这样的设置:
左边的约束是常量111,我想把这个约束改成20,增加盒子的长度。目前我有:
@IBAction func didTapButton(sender: AnyObject) {
view.removeConstraint(leadingConstraint)
leadingConstraint = NSLayoutConstraint(item: view.superview!, attribute: .Leading, relatedBy: .Equal, toItem: greenView, attribute: .Leading, multiplier: 1.0, constant:20)
view.addConstraint(leadingConstraint)
}
我最初有一个错误 leadingConstraint = NSLayoutConstraint(item: view.superview!, attribute: .Leading, relatedBy: .Equal, toItem: greenView, attribute: .Trailing, multiplier: 1.0, constant:20)
。所以我将其更改为 .Leading 和 .Leading 两个属性。现在矩形正在拉伸(stretch),但尺寸不正确,它会离开屏幕:
我在这里做错了什么? (注意:我想通过添加新约束来更改这些约束,而不仅仅是简单地更改常量值。我试图更好地理解!)。对此的任何指示将不胜感激!谢谢
最佳答案
我应该做的是:
Storyboard:
- 创建 2 个约束(一个用于第一个状态,一个用于结束状态)。
- 更改每个约束的优先级。第一个必须高于第二个,但不能是 1000。假设第一个为 751,第二个为 749。
- 为每个约束创建一个 IBOutlet。
代码:
- 更改每个约束的优先级(firstConstraint.priority = 749,secondConstraint.priority = 751)。
- 执行 view.layoutIfNeeded()。
- 所有这些都必须在主线程中完成。
希望它有用。
关于swift - 无法以编程方式调整约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36712763/