在UITableView单元格中设置约束,使UIButtons保持适当的间隔

时间:2015-02-16 19:39:26

标签: ios xcode uitableview interface-builder

这是我遇到的问题。我已经在界面构建器中完成了一系列关于约束的教程,并且我理解了固定。我的应用程序使用UITableView,在UITableView单元格中有4个UIButtons和4个UILabel。对于更大的屏幕尺寸,我想保持间距,如下所示。我想我的意思是我希望间距随着屏幕尺寸动态增加,但图像的大小保持不变。如果我尝试将左右UIButton固定到容器的各自边缘,则此距离不会动态增加,并且中心会有很大的间隙。如何设置它以使布局与较小屏幕尺寸相同?

enter image description here

1 个答案:

答案 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)。

在故事板中......

enter image description here

蓝色视图表示(透明)间隔视图。这是使它们可调整大小相等的设置。您还应将可见按钮/ imageview组合设置为固定宽度。

虽然这个例子说“添加两个约束”'它实际上增加了四个,所有标记为'相等的宽度来查看' - 但似乎做对了。您还需要将每个视图('间距与最近邻居')之间的空间设置为零。