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

Vaz*_*zyb 5 uikit ios uicollectionview

我有一个UICollectionView,它使用Flow Layout放置它的单元格.它是垂直滚动的.

它填补了屏幕分辨率320x480,显示自定义UICollectionViewCell这始终是96*96 - 大小在Interface Builder设置和委托没有实现的方法来设置为每件商品的商品尺寸.

左侧和右侧有插图,每个插图10 px,最小间距设置为6px.

因此,每条水平线有3个单元.

<-10 - > <---- ---- 96> < - 6 - > <---- ---- 96> < - 6 - > <---- ---- 96> < - 10-> = 320.

我遇到的问题是它偶尔会在一条线上放置4个单元!第四个小区大部分都在屏幕外.然后它在下一行只放置2个单元格以进行补偿.流程布局的全部要点是它是一个断线布局,不应该在屏幕外放置任何东西!

我附上了一张照片:

在此输入图像描述

请注意,在第二行,第四项主要是在屏幕外.

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

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

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

请有人给我一些关于可能出错的建议.

谢谢

Wen*_*aoD 1

我已经通过添加委托方法修复了[_collectionViewFlowLayout invalidateLayout]scrollViewDidScroll:

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