Ios 如何使用VisualFormat修改Constraints创建的约束?
例如:我使用constraintsWithVisualFormat创建约束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返回一个约束数组,我不知
[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:返回的约束与在可视化格式字符串中指定的顺序相同。因此,您可以通过索引访问单个约束并对其进行更改。