Interface Builder で定義したレイアウト制約のあるビューがあります。それらは一時的に非アクティブ化できないため、次のように呼び出して選択的に削除することにしました。
[view removeConstraint:myConstraint];
ただし、その後、制約はまだ内部に存在しますview.constraints
。さらに、プログラムで制約を追加したいと思います (繰り返しますが、それらを (非) アクティブにすることはできません)。
- (NSLayoutConstraint*) addHeightConstraint:(int)height forView:(UIView*)view {
NSString* v = [NSString stringWithFormat:@"V:[view(==%i)]", height];
NSArray* cs = [NSLayoutConstraint constraintsWithVisualFormat:v options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)];
NSLayoutConstraint* c = [cs objectAtIndex:0];
c.priority = 1000;
BOOL wasAdded = [view.constraints containsObject:c];
return c;
}
NO
メソッドを呼び出すと、 variableの値が返されますwasAdded
。これは、まったく変更されていないユーザー インターフェイスにも反映されています。
結論として、プログラムで制約を追加することも、ストーリーボードに追加された制約を削除することもできません。私は何を間違っていますか?