我有一个视图,其中包含我通过 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
变量的值wasAdded
。这也反映在完全没有变化的用户界面中。
最后,我既不能以编程方式添加约束,也不能删除添加到情节提要的约束。我究竟做错了什么?