这是我遇到的问题。我已经在界面构建器中完成了一系列关于约束的教程,并且我理解了固定。我的应用程序使用UITableView,在UITableView单元格中有4个UIButtons和4个UILabel。对于更大的屏幕尺寸,我想保持间距,如下所示。我想我的意思是我希望间距随着屏幕尺寸动态增加,但图像的大小保持不变。如果我尝试将左右UIButton固定到容器的各自边缘,则此距离不会动态增加,并且中心会有很大的间隙。如何设置它以使布局与较小屏幕尺寸相同?
答案 0 :(得分:2)
您可以向superview添加一些透明视图,并将它们用作间隔符。我一开始觉得这很奇怪,但我注意到Apple推荐它(它甚至可以作为他们提供的一个非常有用的NSLayout调试消息的建议)
[self.view addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:
@"H:|[spacer1][view1]\
[spacer2(==spacer1)][view2]\
[spacer3(==spacer1)][view3]\
[spacer4(==spacer1)][view4]\
[spacer5(==spacer1)]|"
options:NSLayoutFormatAlignAllTop
metrics:0
views:viewsDictionary]];
如您所见,技巧是将每个间隔物的宽度设置为等于第一个间隔物。然后,您将获得均匀分布的可见视图。在这种情况下,您可以将每个按钮/图像组合添加到容器视图(view1 ... view4)。
在故事板中......
蓝色视图表示(透明)间隔视图。这是使它们可调整大小相等的设置。您还应将可见按钮/ imageview组合设置为固定宽度。
虽然这个例子说“添加两个约束”'它实际上增加了四个,所有标记为'相等的宽度来查看' - 但似乎做对了。您还需要将每个视图('间距与最近邻居')之间的空间设置为零。