Ios 有没有办法通过代码创建大于或等于约束的关系

Ios 有没有办法通过代码创建大于或等于约束的关系,ios,swift,autolayout,nslayoutconstraint,Ios,Swift,Autolayout,Nslayoutconstraint,我正在研究可扩展表格单元,我的算法如下: 我创建了两个视图 创建第二个视图的高度约束,将其作为IBOutlet拖到我的单元格中 选定单元格后,更改选定单元格的状态 一切都很好,但我希望我的第二个视图调整与内部内容相关的大小 以下是我的限制: 所以,我的问题是: 将非严格值写入self.expandableCellHeightConstraint.constant的最佳方法是什么?实际上,我想写一些东西,比如self.expandableCellHeightConstraint.constan

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

  • 我创建了两个视图
  • 创建第二个视图的高度约束,将其作为IBOutlet拖到我的单元格中
  • 选定单元格后,更改选定单元格的状态

  • 一切都很好,但我希望我的第二个视图调整与内部内容相关的大小

    以下是我的限制:

    所以,我的问题是:

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

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

    let heightConstraint = NSLayoutConstraint(
            item: yourExpandableView,
            attribute: .height,
            relatedBy: .greaterThanOrEqual,
            toItem: nil,
            attribute: .notAnAttribute,
            multiplier: 1.0,
            constant: 120
    )
    
    let heightConstraint = yourExpandableView.heightAnchor.constraint(greaterThanOrEqualToConstant: 120)
    
    或者,您可以这样做:

    let heightConstraint = NSLayoutConstraint(
            item: yourExpandableView,
            attribute: .height,
            relatedBy: .greaterThanOrEqual,
            toItem: nil,
            attribute: .notAnAttribute,
            multiplier: 1.0,
            constant: 120
    )
    
    let heightConstraint = yourExpandableView.heightAnchor.constraint(greaterThanOrEqualToConstant: 120)
    
    然后,您可以在需要启用/禁用此约束时将其
    isActive
    属性设置为true或false。您可能还希望将此约束作为类的属性保留,因为一旦其属性
    isActive
    设置为false,约束将变为nil


    我希望这会有帮助

    NSLayoutConstraint有一个“relation”属性,可以设置为“greaterThanOrEqual”。是的,但根据documentationOK,它是只读的,那么您必须在创建约束时设置它:
    NSLayoutConstraint(…,relatedBy:greaterThanOrEqual…)