自定义UICollection视图布局

时间:2017-12-08 20:18:28

标签: ios swift uicollectionview

我正在尝试配置集合视图,以便在附加的图像中显示以下自定义布局: Custom UICollectionView Layout。本质上,我希望能够配置我的集合视图,使其看起来基于行而不是列。例如:

第1行:3个相同大小的正方形,每个正方形宽度的1/3

第2行:1平方,即屏幕宽度的2/3,然后堆叠2个方格        彼此顶部,每个都是屏幕宽度的1/3。

第3行:1个填充屏幕宽度的矩形

第4行:2个大小相等的正方形,每个正方形宽度为屏幕宽度

我经历过多个UICollectionViewLayoutUICollectionViewDelegateFlowLayout教程,但一直无法找到我需要的信息。

1 个答案:

答案 0 :(得分:0)

您需要实施自定义UICollectionViewLayout

  1. 预先计算重复中prepareLayout
  2. 中所有正方形的位置
  3. 使用(重复高度)*(收集中的项目数)/(重复中的项目数)+ collectionViewContentSize中剩余部分的高度来返回内容的高度(这意味着您应该缓存步骤1中每个项目的内容高度,但高度不是该方块的高度(它是该行中最高元素的高度)
  4. layoutAttributesForElementsInRect中,您需要确定rect开始的重复行以及它结束的重复行。然后返回步骤1中这些行的所有缓存布局属性,但是你有添加一个等于(重复计数)/(第一项索引)*(重复高度)的值。
  5. 基本上它是一堆数学,但是当你把它分成重复的部分时,问题就变成了我在(除)中的重复和我需要的那个重复中的哪个元素(模数),并且它更容易解决。 / p>

    我做了类似的事情,但有多个重复,可以按不同的顺序排列,花了几个小时让它工作没有任何错误。它的数学很多而且很乏味。