ios - UICollectionView 单元格布局超出了 Collection View 的边界

标签 ios uikit uicollectionview

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

它填充一个 320x480 的屏幕并显示一个始终为 96*96 的自定义 UICollectionViewCell - 大小在 Interface Builder 中设置,委托(delegate)不实现在每个项目的基础上设置项目大小的方法。

左右各有10px的insets,最小间距设置为6px。

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

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

我遇到的问题是它偶尔会在一行中放置 4 个单元格! 第 4 个单元格大部分不在屏幕上。然后它仅在下一行放置 2 个单元格以进行补偿。流式布局的全部意义在于它是一种换行式布局,不应将任何内容放置在屏幕外!

我附上了一张图片:

enter image description here

请注意,在第二行有第四个项目,大部分都在屏幕之外。

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

每次更新 Collection View 时,这个错误都会出现在不同的地方。 IE。它可能发生在第 2 行,然后一旦发生更新,它可能发生在第 10 行,依此类推。

Collection View 正在由计时器更新。计时器实质上调用了一个处理一些数据的函数,然后使用 dispatch_async(到主队列)更新包含支持数据的数组并调用 [collectionView reloadData]。所以除了主线程之外,我没有从任何线程更新 Collection View 。后备数组仅在主队列和该函数中更新;不是来自其他任何地方。

请有人给我一些建议,告诉我可能出了什么问题。

谢谢

最佳答案

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

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

关于ios - UICollectionView 单元格布局超出了 Collection View 的边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16347102/

相关文章:

ios - 添加具有比例宽度的 subview 到 ScrollView

swift - 通过点击更改 UIButton 的图像 - Swift

ios - 如何处理SwiftUI中的水龙头开始

ios - 为什么 CollectionView 中的自定义按钮只加载到最后一个单元格中? ( swift )

ios - 移动设备上的 HTML5 媒体捕获 - 视频时长

html - iOS 需要双击一个简单的链接元素

ios - 将 UIImage 分配给 Collection View 单元格

Swift 如何取消选择 Collection Cell

ios - 加密plist文件方法

ios - 云 Firestore Swift : How to display number field in label