Swift 无法通过编程方式调整约束
嘿,我有一个这样的设置: 左约束为常数111。我想将此约束更改为20并增加长方体的长度。目前我有:Swift 无法通过编程方式调整约束,swift,autolayout,Swift,Autolayout,嘿,我有一个这样的设置: 左约束为常数111。我想将此约束更改为20并增加长方体的长度。目前我有: @IBAction func didTapButton(sender: AnyObject) { view.removeConstraint(leadingConstraint) leadingConstraint = NSLayoutConstraint(item: view.superview!, attribute: .Leading, relatedBy
@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(项:view.superview!,属性:。Leading,relatedBy:。Equal,toItem:greenView,属性:。Trailing,乘数:1.0,常数:20)时出错。
。所以我把这两个属性都改为.Leading和.Leading。现在矩形正在拉伸,但大小不正确,它将离开屏幕:
我做错了什么?(注意:我想通过添加一个新的约束来更改这些约束,而不仅仅是更改常量值。我试图更好地理解!)。任何关于这方面的建议都将不胜感激!谢谢我应该做的是: 故事板:
- 创建两个约束(一个用于第一个状态,一个用于结束状态)
- 更改每个约束的优先级。第一个必须高于第二个,但不能超过1000。第一个是751,第二个是749
- 为每个约束创建一个IBOutlet
- 更改每个约束的优先级(firstConstraint.priority=749,secondConstraint.priority=751)
- 执行view.LayoutIfNeed()操作
- 所有这些都必须在主线程中完成
希望它能起作用。我应该做的是: 故事板:
- 创建两个约束(一个用于第一个状态,一个用于结束状态)
- 更改每个约束的优先级。第一个必须高于第二个,但不能超过1000。第一个是751,第二个是749
- 为每个约束创建一个IBOutlet
- 更改每个约束的优先级(firstConstraint.priority=749,secondConstraint.priority=751)
- 执行view.LayoutIfNeed()操作
- 所有这些都必须在主线程中完成
希望它能起作用。尝试使用常量
-20
而不是20
,或者在设置引导约束时交换视图尝试使用常量-20
而不是20
或者在设置引导约束时交换视图是的,将其更改为-20。您还可以激活/停用约束,而不是添加/删除约束。是的,将其更改为-20。您还可以激活/停用约束,而不是添加/删除约束。这不是对您的问题的回答,而是对未来的一个好建议:永远不要使用view.addConstraint(someConstraints)
!而是使用NSLayoutConstraint.activateConstraints(someConstraints)
或someConstraint.active=true
这不是对你问题的回答,而是对未来的一个好建议:永远不要使用view.addConstraint(someConstraints)
!而是使用NSLayoutConstraint.activateConstraints(someConstraints)
或someConstraint.active=true