我怎样才能将整个标题视图设置为UICollectionView?

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

我find了在集合视图中设置每个部分头部的方法,但是我找不到如何设置整个头部的头部视图。

苹果对UICollectionViewLayout的说法是:“补充视图呈现数据,但不同于单元格,不同于单元格,用户不能select补充视图,而是使用补充视图来实现给定部分或整个页面的页眉和页脚视图集合视图。补充视图是可选的,它们的使用和布局是由布局对象定义的“,但我不知道如何为整个集合视图实现标题视图。

我试图通过制作一个节标题视图矩形只对第一部分,但它不同于tableHeader的。

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

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

我试图dynamic扩大内容的大小,当存在一些元素,但它似乎不能正常工作…

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

然后诀窍是总是返回YESshouldInvalidateLayoutForBoundsChange:并在prepareLayout重新定位(即更改layoutAttributes的框架)标题基于集合视图xOffset和yOffset。

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

layoutAttributesForElementsInRect:将在每一帧被调用,所以如果你的集合视图中有很多项目,你将需要caching结果,所以它不会影响性能。 所有的属性都应该保持不变,除了那个头。

来源:我花了1个月的时间来处理这个特定的话题。