11

我想将标题设置为集合视图,就像 UITableViewController 的 setTableHeader 一样。

我找到了在集合视图上设置每个部分的标题的方法,但我找不到如何设置整个标题的标题视图。

Apple 对 UICollectionViewLayout 的引用说:“补充视图呈现数据但与单元格不同。与单元格不同,补充视图不能由用户选择。相反,您使用补充视图来实现给定部分或整个部分的页眉和页脚视图等内容集合视图。补充视图是可选的,它们的使用和放置由布局对象定义。”,但我不知道如何为整个集合视图实现标题视图。

我试图通过只在第一部分创建一个节标题视图矩形来实现这一点,但它与 tableHeader 的不同。

在表格视图中,如果我将内容偏移设置为低于标题,则内容大小会自动扩展,以便隐藏标题,尽管存在一些元素。

但是在集合视图中,只有当存在足够多的元素可以滚动时,修改内容偏移才能正常工作。

当存在一些元素时,我尝试动态扩展内容大小,但它似乎无法正常工作......

4

1 回答 1

1

我使用自定义布局实现了这一点,并在每个滚动事件上重新定位标题。从继承 UICollectionViewLayout 开始,网上有很多教程,这是一个很好的教程:http: //markpospesel.wordpress.com/2012/10/25/fixing-circlelayout/

然后诀窍是始终返回YESshouldInvalidateLayoutForBoundsChange:,并prepareLayout根据集合视图 xOffset 和 yOffset 重新定位(即更改 layoutAttributes 的框架)标题。

使用 NSIndexPath 0-0 的补充视图。

layoutAttributesForElementsInRect:将在每一帧上调用,因此如果您的集合视图中有很多项目,您将需要缓存结果,以免影响性能。除了那个标题之外,所有属性都应该保持不变。

资料来源:我花了 1 个月的时间研究这个特定的主题。

于 2014-01-08T04:23:14.587 回答