UICollectionView页眉和页脚视图

时间:2013-07-16 15:47:56

标签: ios uikit uicollectionview uicollectionviewlayout

我正在使用UICollectionView并需要一个全局页眉和页脚以及节标题。全局页眉和页脚都应该与其余内容一起滚动。基本上它们应该像UITableView的tableHeaderView和tableFooterView属性一样工作。

diagram

根据我的理解,补充意见在特定部分的上方或下方,装饰视图无功能。我的全局页眉和页脚应该具有交互元素。

在尝试了几个小时后,我真的把头发拉了出来。我找到了一些令人讨厌的方法,比如使用contentInsets进行黑客攻击并将子视图添加到collectionview中。我真正想要的是一个干净的方法来做到这一点。

我期待着任何建议!

3 个答案:

答案 0 :(得分:5)

您必须创建自己的自定义集合视图布局和数据源。数据源将返回全局标题和全局页脚以及节页眉和页脚,并且您的自定义集合视图布局必须相应地定位它们。

这不是一个非常简单的过程。

在WWDC讲话高级用户界面和集合视图中,他们用如何创建全局标题的示例代码描述了他们的方法。您可以使用他们的示例代码,然后添加一个全局页脚部分。

来自Apple:

Advanced User Interfaces with Collection Views

Demonstrates code factoring, swipe to edit, drag reordering, and a sophisticated custom collection view layout.

答案 1 :(得分:4)

全局页眉和页脚都是第一个和最后一个部分的单元格(UICollectionViewCell)

答案 2 :(得分:-2)

将其修复在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]在正常单元格中,因为没有对应于数组中标题的对象。