【问题标题】:UIcollectionview with 2 different kind of cellsUIcollectionview 有 2 种不同类型的单元格
【发布时间】:2018-04-16 15:27:30
【问题描述】:

我需要创建一个 UIcollectionview,其中包含每行 3 个单元格的单元格网格。在一定数量的单元格之后,比如说 60 个,我需要在其中显示一个带有图像视图的大单元格,并且这些单元格需要是 UIcollectionview 的全宽。 我已经创建了 3 个单元格部分,但我无法弄清楚如何插入大图像单元格以及如何正确布局它。 谢谢。

【问题讨论】:

标签: ios swift uicollectionview


【解决方案1】:

你做几个部分怎么样?标题是另一个单元格。你也可以在那里放一张图片。

【讨论】:

  • 我认为图像不会是页眉或页脚。想象一下,我需要显示 5000 个单元格,每 60 个小单元格我需要显示 1 个更大的单元格,例如广告横幅。有没有办法做到这一点?
  • 改变 cellForRowAtIndex 内的单元格框架,如果单元格 % 60 == 0 ?
  • 我发现 willdisplaycell 函数会将横幅单元格替换为普通单元格。有什么办法可以解决吗?
【解决方案2】:

您可以在 UICollectionViewFlowLayout 委托方法中指定单元格的大小

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        //logic to find if the cell is 60 th item and then and dont forget to return the size of the other cells.
    if 60th cell {
        return size
    } else {
    return size
    }

}

【讨论】:

  • 我遇到了一个问题,我可以看到第 60 个单元格在一段时间内正确显示,然后当我慢慢向下滚动时它被正常单元格替换。
  • 我发现 willdisplaycell 函数会将横幅单元格替换为普通单元格。有什么办法可以解决吗?
  • 这可能是出队项目的逻辑问题,在项目 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) { }。请检查出队逻辑是否正确。
  • 是的,我解决了这个问题。现在我当前的问题是如何在单元格 60 上显示图像,但我的正常数据从单元格 61 开始?因为图像视图也与单元格 60 中的正常项目相同
  • 我没看懂这个问题,你的数据源是否有第 60 项作为图像视图的数据或数据源仅包含类型 1 数据?
猜你喜欢
  • 2016-04-10
  • 1970-01-01
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多