我有一个带有几个不同图标的UITableViewCell,可以以不同的组合显示。这是一个例子:
在这种情况下,有4种不同的组合:
我试图弄清楚如何在这种情况下布局约束,理想情况下,无需在代码中执行此操作,在tableview滚动时在运行时删除和添加所有这些约束,这可能会使滚动生涩。
有没有办法让我在设计时工作?也许通过一些约束来尽可能地使每个图像垂直居中,并且只有在有其他元素的情况下才能抵抗它。缺少的元素可以被隐藏'或者从contentView中删除(以最好的方式)。
答案 0 :(得分:2)
我认为您的设计时解决方案无效。您可以指定没有约束 - 隐藏视图参与布局,如果您要删除视图,那么您将删除约束。
不要认为约束更新会给您带来性能问题 - 首先以最简单的方式进行,然后进行测量。
在这种情况下,最简单的方法可能是使用容器视图来保存您的三个图标。这可以固定在单元格的顶部和底部,并与右边缘保持正确的距离。这些限制不会发生变化。
可以将所有三个图像视图添加到此容器中。水平地,它们不需要约束 - 它们可以在x轴上默认为零并且具有固有宽度。
根据单元格内容,您可以将每个图像视图设置为可见或不显示,删除容器视图上的约束,然后添加新的图像以提供垂直位置。最简单的一组约束是在容器视图的底部使用乘数。您将每个可见图像视图的中心Y约束到适当的乘数 - 如果只有一个可见,乘数0.5,如果有两个,0.33和0.66,并且对于所有三个,0.25,0.5和0.75。
这不是一系列复杂的约束,如果它引起滚动问题,我会感到惊讶。