UICollectionView单元布局超出了集合视图的范围

我有一个UICollectionView,它使用stream布局来放置它的单元格。 它是垂直滚动。

它填充320×480的屏幕,并显示一个总是96 * 96的自定义UICollectionViewCell – 大小是在Interface Builder中设置的,委托没有实现方法来设置每个项目的项目大小。

左右各有10个插图,最小间距设置为6px。

因此会发生什么是每个水平线3个单元格。

<-10 – > <—- —- 96> < – 6 – > <—- —- 96> < – 6 – > <—- —- 96> < – 10-> = 320。

我遇到的问题是偶尔会在一行上放置4个单元格! 第四个单元大部分在屏幕之外。 然后在下面一行放置2个单元来补偿。 整个stream程布局的关键在于它是一个破线的布局,不应该把任何东西放在屏幕外!

我附上了一张照片:

在这里输入图像说明

请注意,在第二行中,大部分屏幕上还有第四项。

我真的不知道是什么原因造成的。 单元格dynamic填充数据,但大小不变。 所有其他行上的单元格都很合适,所以没有理由在某些行上这会发生。

每次收集视图更新时,此错误都会发生在不同的位置。 即。 它可能发生在第2行,那么一旦更新发生,它可能发生在第10行,依此类推。

收集视图正在由定时器更新。 定时器本质上是调用处理某些数据的函数,然后使用dispatch_async(在主队列上)更新包含后备数据的数组,并调用[collectionView reloadData]。 所以我没有更新从主线程以外的任何线程的集合视图。 后备数组只在主队列和该函数中更新; 不从其他地方。

请能有人给我一些build议,可能会出错。

谢谢

我已经通过在scrollViewDidScroll: delegate方法中添加[_collectionViewFlowLayout invalidateLayout]来修复它。

https://github.com/f33chobits/FSCalendar/issues/21