如何修改constraintsWithVisualFormat创建的约束?

时间:2014-12-10 10:20:58

标签: ios autolayout

例如:我使用constraintsWithVisualFormat

创建了约束
[v1 addConstraints:
     [NSLayoutConstraint
      constraintsWithVisualFormat:@"V:|[v2(10)]|"
      options:0 metrics:nil views:vs]];

但当我决定将V1的高度改为V:| [v2(10)] - 100- |时,因为constraintsWithVisualFormat返回一个约束数组,我不知道数组的哪个约束是我的修改,我应该怎么做?不使用constraintsWithVisualFormat?

2 个答案:

答案 0 :(得分:1)

保留对约束数组的引用。

NSArray *constraints = [NSLayoutConstraint
  constraintsWithVisualFormat:@"V:|[v2(10)]|"
  options:0 metrics:nil views:vs];
[v1 addConstraints:constraints];
[v1 removeConstraints:constraints];
constraints = [NSLayoutConstraint
  constraintsWithVisualFormat:@"V:|[v2(10)]-100-|"
  options:0 metrics:nil views:vs];
[v1 addConstraints:constraints];

答案 1 :(得分:1)

它可能对您有用

NSArray * arrConstarint= v1.constraints;
    for (NSLayoutConstraint * constraint in arrConstarint)
    {
        if (constraint.firstAttribute==NSLayoutAttributeHeight && constraint.firstItem == v1)
        {
            // change height of view
            // if not find proper constraint then add constraint.secondAttribute etc in condition
            constraint.constant=100;//set your height
        }
    }

不需要引用约束数组。 但是您有一个视图参考视图更改约束。