UICollectionView 页眉和页脚视图
Posted
技术标签:
【中文标题】UICollectionView 页眉和页脚视图【英文标题】:UICollectionView Header and Footer View 【发布时间】:2013-07-16 15:47:56 【问题描述】:我正在使用 UICollectionView,需要一个全局页眉和页脚以及部分页眉。全局页眉和页脚都应该与其余内容一起滚动。基本上它们应该和 UITableView 的 tableHeaderView 和 tableFooterView 属性完全一样。
据我了解,补充视图在特定部分的上方或下方,装饰视图不起作用。我的全局页眉和页脚应该有交互元素。
尝试了几个小时后,我真的把头发拔掉了。我发现了一些令人讨厌的方法,例如使用 contentInsets 和将子视图添加到集合视图中。我真正想要的是一种干净的方式来做到这一点。
我期待任何建议!
【问题讨论】:
这个可怜的家伙在问完全相同的问题,但没有任何回应:***.com/questions/14515975/… How to make Supplementary View float in UICollectionView as Section Headers do in UITableView plain style 的可能副本 如果页眉和页脚是固定的,那么您可以在collectionview的顶部和底部手动添加它希望它的帮助。 @staticVoidMan 这绝对不是您发布的其他 *** 问题的副本。请再次认真阅读问题。 【参考方案1】:您必须创建自己的自定义集合视图布局和数据源。数据源将返回全局页眉和全局页脚,以及部分页眉和页脚,您的自定义集合视图布局必须相应地定位它们。
这不是一个非常简单的过程。
在 WWDC 演讲 Advanced User Interfaces with Collection Views 中,他们通过示例代码描述了他们如何创建全局标头的方法。您可以使用他们的示例代码,然后向其中添加一个全局页脚部分。
来自 Apple:
Advanced User Interfaces with Collection Views
Demonstrates code factoring, swipe to edit, drag reordering, and a sophisticated custom collection view layout.
【讨论】:
【参考方案2】:全局页眉和页脚都是第一节和最后一节的单元格(UICollectionViewCell)
【讨论】:
这是一个可以接受的答案。保持简单,没有必要让它更复杂【参考方案3】:在 cellForItemAtIndexPath 委托方法中修复此问题
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
if (indexPath.section == 0)
// first section
else if (indexPath.section == [dataSourceSectionsArray.count]-1)
// last section
else
// normal section
您当然应该在 numberOfRowsInSection 方法中返回 [dataSourceSectionsArray.count]+2(一个页眉,一个页脚),并记住在访问数据时始终引用 [dataSourceSectionsArray objectAtIndex:indexPath.row-1]在普通单元格中,因为数组中没有对应于标题的对象。
【讨论】:
以上是关于UICollectionView 页眉和页脚视图的主要内容,如果未能解决你的问题,请参考以下文章