在多个按钮的代码中水平约束IOS

时间:2014-10-21 16:40:54

标签: ios visual-format-language

当我在Xcode中使用Visual Format Language对齐4个按钮时,我添加了

constraintsWithVisualFormat @"V:|-50-[b1]-10-[b2]-10-[b3]-10-[b4]"

它运作正常。 但是当我尝试应用水平约束时,我做了

@"H:|-20-[b1]-20-|"
@"H:|-20-[b2]-20-|"
@"H:|-20-[b3]-20-|"
@"H:|-20-[b4]-20-|"

我想出的最佳解决方案是将它们成对排列,如

@"H:|-20-[b1(==b2)]-20-|"
@"H:|-20-[b3(==b4)]-20-|"

现在我试图在一行代码中完成但没有成功。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

" |"代表你的[B1] [B2] [B3] [B4]等的超视图。你想要做的是类似于你对垂直约束所做的事情:

constraintsWithVisualFormat: @"H:|-?-[B1]-20-[B2]-20-[B3]-20-[B4]-?-|"

编辑: 如果你想让它们在超级视图中居中,你需要为"?"做一些计算。在上面的回答中。

CGFloat viewWidth = mySuperviewHere.frame.size.width;
CGFloat totalWidth = B1.frame.size.width + ... + B4.frame.size.width + 3 * 20;

CGFloat marginWidth = (viewWidth + totalWidth) / 2.0;

constraintsWithVisualFormat: [NSString stringWithFormat:@"H:|-%f-[B1]-20-[B2]-20-[B3]-20-[B4]-%f-|", marginWidth, marginWidth]

答案 1 :(得分:0)

带有2行的第三位代码含糊不清,需要更多代码。所有这一切都是位置b1和b2,然后设置b3和b4的宽度。它没有设置b3或b4的位置,因此它不明确。

什么在第二位代码(4行)中不起作用?这应该有用。

国家英里的最佳解决方案...使用笔尖或故事板来布局视图。