我正在构建一个关于会议的应用程序,我希望在每个会议单元中显示VIP参与者的预览。
这些参与者不是可点击的,也不是可滚动的,这是他们快速看到它们的唯一目的。
问题是视图非常动态:
我该怎么办?
注意:
这只是一种Table View Cell,但我们有很多变化,所以我们在xib文件中构建自定义单元格。 Xcode不允许我在xib中的Collection View中添加Collection View Cell。
答案 0 :(得分:6)
有趣的任务 - 我确信有很多方法,但这里有一个使用UIStackView 加上一些即时计算。
这个想法是定义视图之间的最大差距;所有视图的最大宽度;计算所需的实际间隙,然后让UIStackview处理实际定位。
当然不是你需要的所有功能,但应该让你朝着正确的方向前进。
您可以在此处查看/下载此源代码:https://github.com/DonMag/ScratchPad
查看此示例的Swift3 / SpreadingViews子项目。
答案 1 :(得分:1)
可滚动视图(基于UIScrollView的视图为UICollectionView)的问题在于,您必须处理滚动或预先计算内容的宽度,这并不总是很容易。因此,如果您不想使用可滚动内容,我不会使用UICollectionView,也不会使用任何基于UIScrollView的视图。
然后您可以选择使用UIStackView。堆栈视图非常适合"追加"多个视图并创建某种"桩"以非常简单的方式看待观点。但是,如果您无法控制所需的项目数量,则会超越容器视图的边界。
因此,这就是我要做的事情:
"固定容器视图宽度" case :如果你的容器视图(你的单元格)有一个固定的宽度(永远不会改变),我手动添加我希望在XIB本身支持的UIImageViews,然后隐藏/取消隐藏它们取决于它们关于我想要显示的项目数量。
"可变容器视图宽度" case :如果您的容器视图(您的单元格)具有可变宽度(根据屏幕大小或其他因素而变化),那么您将不得不在任何情况下计算(算一算!)的数量您可以在可用宽度范围内显示的项目。然后,您可以选择使用UIStackView还是添加您的视图&手动限制到容器视图。
我说的有意义吗?
谢谢,