2014-12-06 85 views
1

有什么办法把这个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

这就是metrics参数是什么。你通过一个名为指标的字典,像这样:

@{@"number": 20} 

然后在视觉格式您使用指定的度量,而不是硬编码数值

@"H:|-number-[btn1]-number-[btn2(==btn1)]-number-[btn3(==btn1)]-number-[btn4(==btn1)]-number-[btn5(==btn1)]-number-|" 
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); 
}];