UICollectionView页眉和页脚视图

pau*_*aul 25 uikit ios uicollectionview uicollectionviewlayout

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

图

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

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

我期待着任何建议!

kur*_*ryt 5

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

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

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

来自Apple:

具有集合视图的高级用户界面

演示代码分解,滑动编辑,拖动重新排序以及复杂的自定义集合视图布局.


Mat*_*ijs -4

在 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
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,您应该在 numberOfRowsInSection 方法中返回 [dataSourceSectionsArray.count]+2(一个页眉,一个页脚),并记住,当您以正常方式访问数据时,始终引用 [dataSourceSectionsArray objectAtIndex:indexPath.row-1]单元格,因为数组中没有与标题相对应的对象。