在 xib 文件中的 TableViewCell 中显示可变数量图像的最佳方法是什么?

What's the best approach to display a variable number of images within a TableViewCell in a xib file?

我正在构建一个关于会议的应用程序,我想在其中显示每个会议单元格中 VIP 参与者的预览。

这些参与者不可点击也不可滚动,唯一的目的是让他们一目了然。

问题是视图非常动态:

这是它的样子:

我该怎么办?

注意:

这些只是 Table View Cell 的一种,但我们有更多变体,因此我们在 xib 文件中构建自定义单元格。 Xcode 不允许我将 Collection View Cell 添加到 xib 中的 Collection View。

可滚动视图(基于 UIScrollView 的视图如 UICollectionView)的问题是您必须处理滚动,或预先计算内容的宽度,这并不总是那么容易。出于这个原因,如果您不想拥有可滚动的内容,我不会使用 UICollectionView,也不会使用任何基于 UIScrollView 的视图。

然后您可以选择使用 UIStackView。堆栈视图非常适合 "append" 多个视图并以非常简单的方式创建某种 "pile" 视图。但是,如果您不控制需要多少项,就会越过容器视图的边界。

因此,这就是我要做的:

"Fixed container view width" case:如果您的容器视图(您的单元格)具有固定宽度(永远不会改变),我会手动添加我想要的任意数量的 UIImageView在 XIB 本身中支持,然后 hide/unhide 它们取决于我要显示的项目数。

"Variable container view width" case:如果您的容器视图(您的单元格)具有可变宽度(根据屏幕尺寸或任何其他因素而变化),那么您在任何情况下都必须计算(算一算!)您可以在可用宽度内显示的项目数量。然后,您可以选择使用 UIStackView 或手动将视图和约束添加到容器视图。

我说的有道理吗?

谢谢,

有趣的任务 - 我敢肯定有很多方法,但这里有一个使用 UIStackView plus 一些即时计算。

想法是定义视图之间的最大间隙;所有视图的最大宽度;计算出实际所需的间隙,然后让UIStackview处理实际定位。

当然不是您需要的所有功能,但应该让您朝着正确的方向前进。

您可以see/download这里的来源:https://github.com/DonMag/ScratchPad

查看此示例的 Swift3/SpreadingViews 子项目。