我想要构建一个类似于网格的集合视图布局。其中包含:
- 包含子行的行
- 包含子列的列
- 高度不固定的行
- 可以在两个方向上滚动
- 可以添加/删除行/列
我尝试使用集合流布局,但它变得非常复杂。对我来说,构建自定义布局似乎是更好的选择。
我遇到了一些问题:
- 数据结构(基本类层次结构)以存储仅支持轻松添加/删除行和列的网格信息(仅布局)。
- 计算内容视图的高度,因为行的大小可能不同。
- 计算将位于可见矩形内的行范围。现在,我需要收集所有行的高度信息并将其存储在数组中,然后进一步计算内容大小的高度。另外,为了决定哪些行位于给定的矩形内,我必须应用谓词。每次调用“layoutAttributesForElementsInRect”时在500+行时降低fps仍然可以接受。
- 我尝试维护可见行和列的布局属性的NSSet,并随着行/列的移动清除/添加属性。但是,这比为可见项目创建每个属性更慢。此外,什么设计模式最适合网格?
- 最后但并非最不重要的,是否可以使用UICollectionView设计出这样的布局?
有任何处理这个问题的想法吗?
谢谢:)