2014-12-06 123 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); 
}];