Ios 如何使用VisualFormat修改Constraints创建的约束?

Ios 如何使用VisualFormat修改Constraints创建的约束?,ios,autolayout,Ios,Autolayout,例如:我使用constraintsWithVisualFormat创建约束 [v1 addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[v2(10)]|" options:0 metrics:nil views:vs]]; 但是,当我决定将V1的高度更改为V:|[v2(10)]-100-|时,因为constraintsWithVisualFormat返回一个约束数组,我不知

例如:我使用constraintsWithVisualFormat创建约束

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

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

保留对约束数组的引用

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];

它可能对你有用

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
        }
    }
不需要引用约束数组。
但是您有一个视图的引用,该视图将更改约束。

好的,您的意思是重新创建约束并再次添加它们,我所做的是选择使用addconstraint,因为约束将被更改~~两者看起来都不太好-\uu-好。从
constraintsWithVisualFormat:options:metrics:views:
documentation:返回的约束与在可视化格式字符串中指定的顺序相同。因此,您可以通过索引访问单个约束并对其进行更改。