如何构建连续的视差滚动/集合视图?

时间:2016-08-22 11:27:27

标签: ios uicollectionview

我希望像这样构建一个连续的视差滚动。

http://www.screencast.com/t/7Z48zkkW

但我的要求是视图,然后像这样的CollectionView enter image description here

当集合视图滚动时,然后更改上部视图高度。 是的上部视图和集合视图是分开的。 我还有导航栏,当用户滚动时它也会上升

1 个答案:

答案 0 :(得分:1)

您可以将collectionView与此标题的节标题一起使用。但是,通过这种方式无法实现在搜索下面反弹的效果collectionView,而是整个视图都会反弹。

最简单的iOS 9 +解决方案

1)为搜索上方的项目创建一个单元格

2)为搜索栏(章节标题)创建可重用的视图

3)为这些图片制作单元格

即。你将有两个单元格的原型和一个可重用的视图

在带有collectionView的viewController的viewDidLoad中使用以下代码,以便截面的标题始终位于顶部:

let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout // casting is required because UICollectionViewLayout doesn't offer header pin. Its feature of UICollectionViewFlowLayout
layout?.sectionHeadersPinToVisibleBounds = true

部分数量:保持2

部分== 0的行数将为1,这将是搜索

之上的项目

部分的行数== 2将是您拥有的图像数量

现在,在集合视图数据源中,您有一个方法viewForSupplementaryElementOfKind,您需要实现该方法来获取sectionHeaderView。

实现referenceSizeForHeaderInSection函数,通过返回CGSize(宽度:0,高度:0)来隐藏第一部分(section == 0)的sectionHeader,并为第二部分(section == 1)返回searchBar的大小,如你所愿。

cellForItemAtIndexPath中的

根据部分返回单元格。

修改

我认为您不需要像搜索栏一样在顶部使用粘贴标题。因此,最好将collectionView与section header一起使用。 (节标题包含您标记的红色视图)