【发布时间】:2013-01-25 21:05:38
【问题描述】:
我有一个包含两个子视图的内容视图。我将子视图垂直堆叠并在内容视图中水平居中(x 轴):
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[buttonView]-[label]" options:NSLayoutFormatAlignAllCenterX metrics:nil views:NSDictionaryOfVariableBindings(buttonView, label)]];
现在我想将它们垂直居中(y 轴)。我希望 buttonView 顶部和标签视图底部的空间相等。
我该怎么做?具有优先级的顶部和底部约束?
编辑:
Scott,您建议的代码如下所示:
我尝试在 buttonView 和标签 -1- 之间设置间距,但没有帮助。
这就是我需要的样子:
这是我用来实现它的代码:
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-13-[buttonView]-[label]-10-|" options:NSLayoutFormatAlignAllCenterX metrics:nil views:NSDictionaryOfVariableBindings(buttonView, label)]];
我的约束有效,但是是硬编码的,如果可能的话,我宁愿远离。
【问题讨论】:
-
IIRC 您不能使用视觉格式来执行此操作,您将不得不使用代码构建约束。
-
我可以;我可以对距离进行硬编码,但如果内容视图需要更改大小,我更喜欢动态的东西。
-
我并不是说对距离进行硬编码。我的意思是在代码中构建约束为您提供了无法使用视觉格式表达的选项。
标签: ios objective-c autolayout nslayoutconstraint