假设我有一个名为label的超类的实例变量,我想使用可视格式设置自动布局约束。如果我尝试在格式字符串中使用self.label,我会得到解析错误,并且我无法从子类访问_label。目前正在使用的解决方法如下,但它看起来有点难看。还有更好的方法吗?
UILabel *label = self.label;
NSDictionary *views = NSDictionaryOfVariableBindings(label, _textField);
[self.contentView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[label(==_textField)][_textField(==label)]-|"
options:NSLayoutFormatAlignAllCenterY
metrics:nil
views:views]];
答案 0 :(得分:9)
constraintsWIthVisualFormat
需要一个视图字典,但它不一定来自NSDictionaryOfVariableBindings
例如:
UILabel *label = self.label;
NSDictionary *views = @{@"label":self.label, @"_textField":_textField};
[self.contentView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[label(==_textField)][_textField(==label)]-|"
options:NSLayoutFormatAlignAllCenterY
metrics:nil
views:views]];
我没有测试过,所以请告诉我,如果我的订单或语法错误,我可以解决它,但关键是你的字典可以是任意的。