swift - 无法以编程方式调整约束

标签 swift autolayout

嘿,我有这样的设置:

enter image description here

左边的约束是常量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),但尺寸不正确,它会离开屏幕:

enter image description here

我在这里做错了什么? (注意:我想通过添加新约束来更改这些约束,而不仅仅是简单地更改常量值。我试图更好地理解!)。对此的任何指示将不胜感激!谢谢

最佳答案

我应该做的是:

Storyboard:

  • 创建 2 个约束(一个用于第一个状态,一个用于结束状态)。
  • 更改每个约束的优先级。第一个必须高于第二个,但不能是 1000。假设第一个为 751,第二个为 749。
  • 为每个约束创建一个 IBOutlet。

代码:

  • 更改每个约束的优先级(firstConstraint.priority = 749,secondConstraint.priority = 751)。
  • 执行 view.layoutIfNeeded()。
  • 所有这些都必须在主线程中完成。

希望它有用。

关于swift - 无法以编程方式调整约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36712763/

相关文章:

ios - dismissViewControllerAnimated :completion: causing memory crash

ios - 我可以做什么来调整文本大小而不在 UIPickerView 中显示...?

swift - "CGFloat is not convertible to Int"尝试计算表达式时

ios - 检查数组是否为 nil/或是否已在 Swift/iOS 中加载?

ios - 数组 append 不适用于 Swift

iOS 自动布局 : why is zero multiplier not allowed?

ios - 更改 CoreData 记录,SwiftUI

ios - iPad 应用程序左右两侧的空格

ios - 自动布局会导致旋转时出现小间隙

ios - ScrollView 具有不明确的可滚动内容高度