如何检查视图中是否已存在约束?

时间:2015-04-09 08:49:25

标签: ios swift autolayout

我正在为tableView和其中的每个单元格使用自动布局,我以编程方式创建了一些约束。

为了避免每次都删除所有约束,我想知道是否有循环view.constraints()的方法,如果存在H:|-view-|之类的约束,我将其删除。

有可能吗?

3 个答案:

答案 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)