我有一个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]。所以我没有从主线程以外的任何线程更新集合视图。后备阵列仅在主队列和该功能中更新;不是来自其他地方。
请有人给我一些关于可能出错的建议。
由于
答案 0 :(得分:1)
我已通过在[_collectionViewFlowLayout invalidateLayout]
委托方法中添加scrollViewDidScroll:
来解决此问题。