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 页眉和页脚视图的主要内容,如果未能解决你的问题,请参考以下文章

android listviews:页眉和页脚视图

iOS UICollectionView 页眉和页脚位置

我们如何在滚动视图中设置过度滚动页眉和页脚?

Codeigniter 加载页眉和页脚一次

打印网页上的页眉和页脚如何设置

如何自动加载页眉和页脚视图?