变量约束

时间:2014-12-06 14:30:21

标签: objective-c constraints

有没有办法放置NSUInteger

NSUInteger number = 20;

在这个约束中?

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-25-[btn1]-25-[btn2(==btn1)]-25-[btn3(==btn1)]-25-[btn4(==btn1)]-25-[btn5(==btn1)]-25-|"  options:0 metrics:nil views:views]];

所以我希望它所说的25的位置是20,但它应该由number表示。

注意:我希望最终产品最终使用变量宽度:

NSUInteger widthOfScreen = [UIScreen mainScreen].bounds.size.width;
NSUInteger width = (widthOfScreen - 55 * 5) / 6;

2 个答案:

答案 0 :(得分:2)

这就是metrics参数的用途。您传递了命名指标的字典,如下所示:

@{@"number": 20}

然后,在可视格式中,您使用该命名度量而不是硬编码数值

@"H:|-number-[btn1]-number-[btn2(==btn1)]-number-[btn3(==btn1)]-number-[btn4(==btn1)]-number-[btn5(==btn1)]-number-|"

答案 1 :(得分:0)

如果还有时间,请使用Masonry。它缩短了构建和修改约束所需的开发时间。对我来说,这是唯一的出路。变量只能传递给约束生成器块。

[self.view mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.equalTo(number).with.offset(10);
    make.bottom.equalTo(@20).with.offset(10);
    make.left.equalTo([NSNumber numberWithFloat:20.0f]).with.offset(10).with.priorityHigh();
    make.right.eqalTo(number);
}];