30

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

图表

据我了解,补充视图在特定部分的上方或下方,装饰视图不起作用。我的全局页眉和页脚应该有交互元素。

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

我期待着任何建议!

4

3 回答 3

6

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

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

在 WWDC 演讲 Advanced User Interfaces with Collection Views 中,他们用示例代码描述了他们如何创建全局标头的方法。您可以使用他们的示例代码,然后向其中添加一个全局页脚部分。

来自苹果:

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

演示代码分解、滑动编辑、拖动重新排序和复杂的自定义集合视图布局。

于 2015-09-05T19:46:31.283 回答
4

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

于 2015-08-24T07:31:59.430 回答
-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
    }
}

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

于 2013-12-12T09:13:07.730 回答