是有一种方法来创建约束大于或通过代码
问题描述:
我正在扩展桌子电池平等关系,我的算法如下:是有一种方法来创建约束大于或通过代码
- 我创建了两个观点。
- 创建第二个视图的高度约束,将它作为IBOutlet拖到我的单元格中。
- 选中单元格后,会更改所选单元格的状态。
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
}
}
}
}
一切都很好,但我想我的第二个观点调整大小有关内部内容。
这里是我的约束:
所以,我的问题是:
什么是写不严格值self.expandableCellHeightConstraint.constant
最好的方法是什么?其实我想写点像self.expandableCellHeightConstraint.constant >= 120
,但据我所知这是不可能的。
答
作为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。
我希望这有帮助!
NSLayoutConstraint具有可以设置为“greaterThanOrEqual”的“关系”属性。 –
是的,但它是只读的,根据文档 – dand1
好的,那么你必须在创建约束时设置它:'NSLayoutConstraint(...,relatedBy:greaterThanOrEqual,...)' –