我知道记录在案的建议是使用 UICollectionView Flow Layout 如果您正在做任何“像网格或基于行的中断布局”。但是,我不确定这是否适用于我的情况。
我想要一个网格,但不想要一个换行的布局。物品应该在水平和垂直方向上无限地布置,而无需堆叠。本质上,如果内容超出框架,则可以水平或垂直滚动的巨型棋盘。
要继承 UICollectionView流布局,我必须:
- 覆盖
prepareLayout
以停止布局包装项目。这似乎需要做很多工作。 - 覆盖
collectionViewContentSize
。
Apple 表示他们在制作 UICollectionView流布局方面做了“很多艰苦的工作”,所以如果可以的话,我应该利用它。但是如果我必须重写prepareLayout
以关闭换行,我怀疑我正在丢弃他们的大部分工作。在他们剩下的工作中,我可能不会使用其中的大部分(例如,minimumLineSpacingForSectionAtIndex
)。
因为我想要的布局是如此简单,我怀疑我应该继承 UICollectionViewLayout ,因为:
- 我将有一个更简单、更清晰的实现,所有内容都在一个布局类中,而不是在子类和委托之间传播。
- 我认为这不会比继承 UICollectionView Flow Layout 更难,因为在这两种情况下我都必须重写
prepareLayout
,我怀疑这就是所有艰苦工作的所在。 - 与尝试在 UICollectionView Flow Layout 子类之上添加另一个 kludge 相比,我将处于更好的位置以自定义方式调整其他 UICollectionViewLayoutAttributes 。
我的结论正确吗?