CSStickyHeaderFlowLayout标题框架

Mar*_*ubé 11 ipad ios uicollectionview uicollectionviewlayout

编辑:我已经创建了一个非常小的应用程序,完美地代表了问题.https://drive.google.com/file/d/0B6sI4Feh1HJUb3pGa2pBUmY4QW8/view?usp=sharing

在示例应用程序中,我们只需向下滚动,然后按顶部栏上的按钮即可查看我遇到的问题


我使用https://github.com/jamztang/CSStickyHeaderFlowLayout在我的集合视图中有粘性标题行为(如默认的UITableView).

滚动浏览集合视图时,它的效果非常好.我在collectionview外面有一个搜索栏,允许用户使用搜索文本过滤数据,每次用户输入一个字母时,我都会使用找到的数据刷新collectionview的数据.

问题是让我们说集合视图中当前有4个部分,它在底部完全滚动.当我输入一个certian字母时,它会过滤除一个项目之外的所有内容(带有一个标题).然后,内容大小会针对集合视图进行更改并显示正确的数据,但标题太低(请参见屏幕截图).

我已经调查了flowlayout内部和内部layoutAttributesForElementsInRect,我看到它实际上将框架的原点Y设置为0(就像它应该是),但似乎collectionview不使用此值并使用前一个(当收集时)视图向下滚动).

知道什么可能导致UICollectionView不在内部使用所需的框架layoutAttributesForElementsInRect

看错了标题

Tim*_*ich 0

我试图解决这个问题,但看起来这是不可能的,直到 UICollectionViewLayout 机制对我们来说是黑匣子。自定义布局在 reloadData 上正确地将更新的框架返回到布局引擎:

在此输入图像描述

但隐藏引擎甚至不询问属性是否相等。对于您的情况,您可以使用简单的解决方法。contentOffset重新加载后更新即可:

[self.collectionView reloadData];
self.collectionView.contentOffset = CGPointZero;
Run Code Online (Sandbox Code Playgroud)