如何以编程方式访问约束数据?

时间:2017-11-30 13:38:30

标签: ios swift constraints

我想以编程方式访问 firstAttribute约束属性。这样我就能找到一个约束是高度约束,宽度约束,topMargin约束等... 当我尝试时,

print(constraint.firstAttribute)

我得到了一般结果

  

“NSLayoutAttribute”

但我想要更具体的结果来根据 属性(height,width,topMargin等......) 类型来区别对待约束。

3 个答案:

答案 0 :(得分:1)

您要查找的约束属性为firstAttribute(或secondAttribute)。但是,你真的没有必要“猜测”你正在看哪个约束 - 只需将约束存储为属性并相应地命名它们。

编辑:要知道您拥有哪种类型的属性,请切换它:

switch myConstraint.firstAttribute {
    case .height:
    // height constraint
    case .leading:
    // leading constraint
    case .topMargin:
    // top margin constraint
    // etc
}

答案 1 :(得分:0)

解决方法是将约束存储为属性。您可以使用故事板或笔尖(就像按钮或标签)或代码中的插座来执行此操作。

这样,您不必深入视图以尝试找到约束。你只需要访问它......

buttonHeightConstraint.constant = 50

等等...

答案 2 :(得分:0)

对我而言 firstAttribute 根本不起作用,而且,它与iOS 9.0之前的版本不兼容

所以我最终通过为NSLayoutConstraint对象分配一个标识符来解决。然后,您可以迭代视图的约束并比较标识符以检索所需的约束。

yourConstraint.identifier = "yourString"

所以:

for tmpConst in self.view.constraints {
        if tmpConst.identifier == "yourString" {
            return tmpConst
        }
}

将返回你的约束。