我正在为我的tableView使用自动布局,对于其中的每个单元格,我都会通过编程方式创建一些约束。
为了避免每次删除所有约束,我想知道是否有一种方法可以循环查找
这是否可能?
为了避免每次删除所有约束,我想知道是否有一种方法可以循环查找
view.constraints()
,如果存在像H:|-view-|
的约束,则将其删除。这是否可能?
view.constraints()
,如果存在像H:|-view-|
的约束,则将其删除。您需要使用变量(或数组)来保存符合您要求的约束条件,然后循环查找view.constraints()以删除它们。当您使用可视化格式时,无论您创建什么都将转换为多个约束。
另一种方法是通过检查约束属性(如firstItem和secondItem、relation等)来匹配您想要的内容。
以下是我如何检查一个控件是否已经有宽度或高度约束(Swift 5.1):
debugPrint(btn.constraints.contains(where: { (item) -> Bool in
return item.firstAttribute.rawValue == NSLayoutConstraint.Attribute.width.rawValue;
}))
debugPrint(btn.constraints.contains(where: { (item) -> Bool in
return item.firstAttribute.rawValue == NSLayoutConstraint.Attribute.height.rawValue;
}))
不需要循环约束条件。这应该可以工作:
toRemove = NSLayoutConstraint.constraints(withVisualFormat: "H:|-view-|",
options: [],
metrics: nil,
views: ["view": yourView])
viewWithConstraints.removeConstraints(toRemove)