UICollectionViewFlowLayout

UICollectionViewFlowLayout

我知道,如果您正在做任何“像网格或基于行的中断布局”的操作,建议使用UICollectionViewFlowLayout。但是,我不确定这是否适用于我的情况。

我想要一个网格,但是而不是想要一个换行的布局。物品应水平和垂直无限地布置,且不得堆叠。本质上是一个巨大的棋盘,如果内容超出框架,则可以水平或垂直滚动​​。

要继承UICollectionViewFlowLayout的子类,我必须:

  • 覆盖prepareLayout以停止布局包装项目。这似乎是很多工作。
  • 覆盖collectionViewContentSize

  • 苹果公司表示,他们在制作UICollectionViewFlowLayout时已经做了很多“艰苦的工作”,因此,如果可以的话,我应该利用它。但是,如果我必须重写prepareLayout来关闭换行符,我怀疑我将丢弃他们的大部分工作。在剩下的工作中,我可能还是不会使用其中的大部分内容(例如minimumLineSpacingForSectionAtIndex)。

    因为我想要的布局非常简单,所以我怀疑应该改用UICollectionViewLayout子类,因为:
  • 我将拥有一个更简单,更干净的实现,所有内容都放在一个布局类中,而不是在子类和委托(delegate)之间散布。
  • 我认为这不会比对UICollectionViewFlowLayout进行子类化要困难得多,因为在两种情况下我都必须重写prepareLayout,并且我怀疑这就是所有艰苦工作的地方。
  • 与尝试在UICollectionViewFlowLayout子类之上添加另一个kudge相比,以自定义方式调整其他UICollectionViewLayoutAttributes处于更好的位置。

  • 我的结论正确吗?

    最佳答案

    UICollectionViewFlowLayout 仍然不能支持两个方向,它只能沿一个轴水平或垂直滚动​​。因此,您必须子类化 UICollectionViewLayout 而不是 UICollectionViewFlowLayout

    然后,您必须按照正确的说明重写 prepareForLayout layoutsAttributesForElementsInRect 方法。

    关于ios - UICollectionViewFlowLayout与子类化UICollectionViewLayout,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14449283/

    10-09 19:25