CSStickyHeaderFlowLayout标题框架

时间:2015-07-27 15:17:58

标签: ios ipad uicollectionview uicollectionviewlayout

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

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

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

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

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

我已在flowlayout内部和layoutAttributesForElementsInRect内部进行了调查,我发现它实际上将框架的原点Y设置为0(就像它应该的那样),但看起来这个集合视图并没有使用此值并使用前一个值(当集合视图向下滚动时)。

知道什么可能导致UICollectionViewlayoutAttributesForElementsInRect内没有使用所需的框架?

See wrong header

1 个答案:

答案 0 :(得分:0)

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

enter image description here

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

[self.collectionView reloadData];
self.collectionView.contentOffset = CGPointZero;