I know how to modify a existing constraint. But I would to know if someone has found a solution to get a constraint without save this one as a property.
Current solution to set Constraint height:
1) save NSLayoutConstraint in a variable:
NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:myView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0f
constant:20];
[self.view addConstraint:heightConstraint];
2) Set the constant of the Constraint saved to "0.0" ( to hide this view)
[heightConstraint setConstant:200];
I'm looking for a solution like this:
[myView setConstraint:@"0." forAttribute:NSLayoutAttributeHeight]
I just built this Category (https://github.com/damienromito/UIView-UpdateAutoLayoutConstraints) that update constrains when you want:
//you can use tools to hide/show a uiview
[myView1 hideByHeight:YES];
Or just do it to hide an UIView with autolayout:
//Hide View
[myView1 setConstraintConstant:0 forAttribute:NSLayoutAttributeHeight];
UIView has a method that returns all constraints affecting its layout in one of the dimensions:
NSArray *constraints =
[someView constraintsAffectingLayoutForAxis:UILayoutConstraintAxisVertical];
Then you can just find the one you're interested in.
来源:https://stackoverflow.com/questions/22384927/hide-autolayout-uiview-how-to-get-existing-nslayoutconstraint-to-update-this-o