如何将整个标题视图设置为UICollectionView?

时间:2013-01-25 05:36:12

标签: ios ios6 uicollectionview uicollectionviewlayout

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

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

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

我尝试通过仅将截面标题视图矩形设置为第一部分来实现此功能,但它与tableHeader的设置不同。

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

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

当存在少量元素时,我尝试动态扩展内容大小,但似乎它不能正常工作......

1 个答案:

答案 0 :(得分:1)

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

然后诀窍是始终将YES返回shouldInvalidateLayoutForBoundsChange:,并在prepareLayout重新定位(即更改layoutAttributes'框架)标题基于集合视图xOffset和yOffset。

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

每个帧都会调用

layoutAttributesForElementsInRect:,因此如果集合视图中有很多项,则需要缓存结果,以免影响性能。除了那个标题之外,所有属性都应该不受影响。

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