既存の制約を変更する方法を知っています。しかし、誰かがこれをプロパティとして保存せずに制約を取得するための解決策を見つけたかどうかを知りたいと思います。
制約の高さを設定するための現在のソリューション:
1)NSLayoutConstraintを変数に保存します:
NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:myView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0f
constant:20];
[self.view addConstraint:heightConstraint];
2)保存された制約の定数を「0.0」に設定します(このビューを非表示にします)
[heightConstraint setConstant:200];
私はこのような解決策を探しています:
[myView setConstraint:@"0." forAttribute:NSLayoutAttributeHeight]
必要なときに制約を更新するこのカテゴリ( https://github.com/damienromito/UIView-UpdateAutoLayoutConstraints )を作成しました。
//you can use tools to hide/show a uiview
[myView1 hideByHeight:YES];
または、自動レイアウトでUIViewを非表示にするには:
//Hide View
[myView1 setConstraintConstant:0 forAttribute:NSLayoutAttributeHeight];
UIViewには、次のいずれかのディメンションのレイアウトに影響するすべての制約を返すメソッドがあります。
NSArray *constraints =
[someView constraintsAffectingLayoutForAxis:UILayoutConstraintAxisVertical];
次に、興味のあるものを見つけることができます。