我正在为tableView和其中的每个单元格使用自动布局,我以编程方式创建了一些约束。
为了避免每次都删除所有约束,我想知道是否有循环view.constraints()
的方法,如果存在H:|-view-|
之类的约束,我将其删除。
有可能吗?
答案 0 :(得分:4)
您需要使用变量(或数组)来保存那些与您想要的匹配的约束,然后循环view.constraints()以删除它们。使用可视格式时,无论您创建什么,都会转换为多个约束。
另一种使用的方法是遍历约束并检查约束属性,例如firstItem和secondItem,relation等,以匹配您想要的内容。
答案 1 :(得分:1)
这是我检查控件是否已经具有宽度或高度约束(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;
}))
答案 2 :(得分:0)
无需循环约束。这应该起作用:
toRemove = NSLayoutConstraint.constraints(withVisualFormat: "H:|-view-|",
options: [],
metrics: nil,
views: ["view": yourView])
viewWithConstraints.removeConstraints(toRemove)