16

我开始使用 ios 6 和 UICollectionView 开发 ios 应用程序。我注意到补充视图和装饰视图都支持。

有人可以用要点解释两者之间的区别吗?它们听起来非常相似。

如果我想在我的集合视图中添加一个加载器(在加载该部分时将出现在每个部分的底部),它应该是补充视图还是装饰视图?

谢谢

4

2 回答 2

39

装饰视图正如其名:装饰、镀铬。只有集合视图布局决定它们是什么以及放置它们的位置(例如,如果您想在屏幕上每 5 个项目绘制线条)。

补充视图与您的数据更相关。集合视图布局仍然决定将它们放在哪里,但它们由集合视图数据源提供,就像常规单元格一样。例如,如果您想为部分添加标题,您将使用补充视图,因为每个部分的标题都不同,您需要为每个部分调用数据源。

如果你的加载器是通用的,它可能是一个装饰视图,但是装饰视图并不是真正可访问的(布局对象说明了它们的放置位置,就是这样,它们是由集合视图创建的,你永远不会得到对它们的引用),所以如果你想开始/停止动画,装饰视图不是最好的选择。如果您使用补充视图,那么您可以在创建时访问它(在您的数据源collectionView:viewForSupplementaryElementOfKind:atIndexPath:方法中)。但是,您只能在常规数据单元格布置在屏幕上后查询集合视图。UICollectionViewLayout此外,如果您想使用自定义装饰或补充视图,则必须编写自己的类。基础UICollectionViewFlowLayout仅提供页脚和页眉补充视图。

于 2013-10-04T08:27:21.473 回答
4

从 UITableView 的角度来看:

补充 = 部分。

装饰 = tableFooterView tableHeaderView

于 2018-06-19T06:43:01.160 回答