有没有一种方法可以通过代码创建大于或等于关系的约束

dan*_*nd1 1 ios autolayout nslayoutconstraint swift

我正在处理可扩展表格单元格,我的算法如下:

  1. 我创建两个视图。
  2. 创建第二个视图的高度约束,将其作为IBOutlet拖动到我的单元格中。
  3. 选择单元格后,更改所选单元格的状态。

class ExpandableCell: UITableViewCell {

    @IBOutlet weak var expandableCellHeightConstraint: NSLayoutConstraint!

    @IBOutlet weak var expandableView: UIView!

    var isExpanded:Bool = false
    {
        didSet
        {
            if !isExpanded {
                self.expandableCellHeightConstraint.constant = 0.0

            } else {
                self.expandableCellHeightConstraint.constant = 120
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

一切都很好,但我想重新调整与内部内容相关的第二个视图的大小。

这是我的约束:

在此处输入图片说明

所以,我的问题是:

将非严格值写入的最佳方法是什么self.expandableCellHeightConstraint.constant?实际上,我曾想过编写类似的东西self.expandableCellHeightConstraint.constant >= 120,但据我所知这是不可能的。

swa*_*sta 5

正如Martin R建议的那样,您可以在代码中创建高度约束,如下所示:

let heightConstraint = NSLayoutConstraint(
        item: yourExpandableView,
        attribute: .height,
        relatedBy: .greaterThanOrEqual,
        toItem: nil,
        attribute: .notAnAttribute,
        multiplier: 1.0,
        constant: 120
)
Run Code Online (Sandbox Code Playgroud)

或者,您可以这样做:

let heightConstraint = yourExpandableView.heightAnchor.constraint(greaterThanOrEqualToConstant: 120)
Run Code Online (Sandbox Code Playgroud)

然后,isActive只要需要启用/禁用此约束,就可以将其属性设置为true或false。您可能还希望将此约束保留为类的属性,因为一旦将约束的属性isActive设置为false ,约束就会变为nil 。

希望对您有所帮助!