繁体   English   中英

UICollectionView-基于数据自定义项目布局的正确方法?

[英]UICollectionView - correct way to customize item layout based on data?

我还是UICollectionView的新手,所以我需要帮助了解如何正确链接布局和数据。 假设我使用的是基本流程布局(或其子类),各节中只有一列项目。 根据本节的内容,我想将标题放置在左侧或右侧。

标头的布局属性和数据之间的联系应该在哪里发生? 我似乎无法连接点。

来自http://www.objc.io/issue-3/collection-view-layouts.html

集合视图布局有两种常规类型:

其计算与内容无关的布局。 这是您从UITableView和UICollectionViewFlowLayout知道的“简单”情况。 每个单元格的位置和外观并不取决于其显示的内容,而是取决于其在所有单元格列表中的顺序。 以默认流布局为例。 每个单元格都位于其前任单元的旁边(如果没有空间,则位于下一行的开头)。 布局对象不需要访问实际数据即可计算布局。

需要进行与内容有关的计算的布局。 我们的日历视图就是这种类型的一个例子。 它要求布局对象直接向集合视图的数据源询问应该显示的事件的开始日期和结束日期。 在许多情况下,布局对象不仅需要有关当前可见单元格的数据,而且还需要来自所有记录的某些信息,以便首先确定哪些单元格当前可见。

在我们的日历示例中,布局对象(如果要求某个矩形内的单元格的属性)必须遍历数据源提供的所有事件,以确定哪些事件位于请求的时间窗口内。 将其与流布局进行对比,在流布局中,一些相对简单且与数据源无关的数学足以计算位于某个矩形中的单元的索引路径(假设网格中的所有单元都具有相同的大小)。

具有依赖于内容的布局是一个有力的信号,表明您将需要编写自己的自定义布局类,而不能通过自定义UICollectionViewFlowLayout来实现。 这就是我们要做的。

UICollectionViewLayout的文档列出了子类应重写的方法。

我建议您阅读其中的内容,并查看其日历示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM