【发布时间】:2013-10-04 07:48:48
【问题描述】:
我开始使用 ios 6 和 UICollectionView 开发 ios 应用程序。 我注意到补充视图和装饰视图都支持。
有人可以用要点解释两者之间的区别吗?它们听起来非常相似。
如果我想在我的集合视图中添加一个加载器(在加载该部分时,它将显示在每个部分的底部),它应该是补充视图还是装饰视图?
谢谢
【问题讨论】:
标签: ios uicollectionview
我开始使用 ios 6 和 UICollectionView 开发 ios 应用程序。 我注意到补充视图和装饰视图都支持。
有人可以用要点解释两者之间的区别吗?它们听起来非常相似。
如果我想在我的集合视图中添加一个加载器(在加载该部分时,它将显示在每个部分的底部),它应该是补充视图还是装饰视图?
谢谢
【问题讨论】:
标签: ios uicollectionview
装饰视图正如其名:装饰、镀铬。只有集合视图布局才能决定它们是什么以及放置它们的位置(例如,如果您想每 5 个项目在屏幕上绘制线条)。
补充视图与您的数据更相关。集合视图布局仍然决定将它们放在哪里,但它们由集合视图数据源提供,就像常规单元格一样。例如,如果您想为部分添加标题,则可以使用补充视图,因为每个部分的标题都不同,您需要为每个部分调用数据源。
如果你的加载器是通用的,它可能是一个装饰视图,但是装饰视图并不是真正可访问的(布局对象说明了它们的放置位置,就是这样,它们是由集合视图创建的,你永远不会得到参考它们),所以如果你想开始/停止动画它,装饰视图不是最好的选择。如果您使用补充视图,那么您可以在创建时访问它(在您的数据源collectionView:viewForSupplementaryElementOfKind:atIndexPath: 方法中)。但是,您只能在常规数据单元格布置在屏幕上后查询集合视图。
此外,如果您想使用自定义装饰或补充视图,则必须编写自己的 UICollectionViewLayout 类。基础UICollectionViewFlowLayout 仅提供页脚和页眉补充视图。
【讨论】:
register 方法之一(或在情节提要中注册)。对于装饰视图,您可以在布局对象本身上使用register 方法之一。
从 UITableView 的角度来看:
补充 = 部分。
装饰 = tableFooterView tableHeaderView
【讨论】: