【问题标题】:Custom UICollection view layout自定义 UICollectionviewlayout
【发布时间】:2017-12-09 05:05:47
【问题描述】:

我正在尝试将集合视图配置为具有以下自定义布局,如附图所示: 。本质上,我希望能够配置我的集合视图,使其看起来基于行而不是列。例如:

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

第 2 行:1 个正方形,即屏幕宽度的 2/3,然后堆叠 2 个正方形 彼此顶部各为屏幕宽度的 1/3。

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

第 4 行:2 个大小相同的正方形,每个正方形是屏幕宽度的 1/2

我已经阅读了多个UICollectionViewLayoutUICollectionViewDelegateFlowLayout 教程,但一直找不到我需要的信息。

【问题讨论】:

    标签: ios swift uicollectionview


    【解决方案1】:

    您需要实现自定义UICollectionViewLayout

    1. prepareLayout 中预先计算重复中所有方格的位置
    2. 通过使用 (repeat height) * (number of items in collection) / (number of items in repeat) + collectionViewContentSize 中剩余部分的高度返回内容的高度(这意味着您应该缓存内容步骤 1 中每个项目的高度,但高度不是该正方形的高度(它是该行中最高元素的高度)
    3. layoutAttributesForElementsInRect 中,您需要确定矩形开始的重复行和结束的重复行。然后从步骤 1 返回这些行的所有缓存布局属性,但您必须添加返回一个等于(重复计数)/(第一项索引)*(重复高度)的 y 值。

    基本上它是一堆数学,但是当你把它分成重复的部分时,问题就变成了我在哪个重复中(除法)以及我需要该重复中的什么元素(模数),而且它更容易解决。

    我做了与此类似的事情,但可以按不同顺序排列多次重复,并且需要几个小时才能使其正常工作而没有任何错误。它涉及大量数学并且非常乏味。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      相关资源
      最近更新 更多