是有一种方法来创建约束大于或通过代码

问题描述:

我正在扩展桌子电池平等关系,我的算法如下:是有一种方法来创建约束大于或通过代码

  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 
      } 
     } 
    } 
} 

一切都很好,但我想我的第二个观点调整大小有关内部内容。

这里是我的约束:

enter image description here

所以,我的问题是:

什么是写不严格值self.expandableCellHeightConstraint.constant最好的方法是什么?其实我想写点像self.expandableCellHeightConstraint.constant >= 120,但据我所知这是不可能的。

+0

NSLayoutConstraint具有可以设置为“greaterThanOrEqual”的“关系”属性。 –

+0

是的,但它是只读的,根据文档 – dand1

+0

好的,那么你必须在创建约束时设置它:'NSLayoutConstraint(...,relatedBy:greaterThanOrEqual,...)' –

作为Martin R建议,你可以创建一个这样的代码中的高度约束:

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。

我希望这有帮助!