【问题标题】:Collection cell wrongly resized in reloadData集合单元格在 reloadData 中错误地调整了大小
【发布时间】:2019-11-28 13:57:21
【问题描述】:

我不知道为什么,但是我的 collectionView 的单元格在 reloadData 后会自动错误地调整大小。

在第一次初始化之后,然后在 reloadData 之后:

我使用UICollectionViewDelegateFlowLayout 来定义单元格的大小,但它没有处理它:

  func collectionView(_ collectionView: UICollectionView,
                      layout collectionViewLayout: UICollectionViewLayout,
                      sizeForItemAt indexPath: IndexPath) -> CGSize {
    let paddingSpace = sectionInsets.left * (2 + 1)
    let availableWidth = view.frame.width - paddingSpace
    let widthPerItem = availableWidth / 2

    return CGSize(width: widthPerItem, height: widthPerItem)
  }

  func collectionView(_ collectionView: UICollectionView,
                      layout collectionViewLayout: UICollectionViewLayout,
                      insetForSectionAt section: Int) -> UIEdgeInsets {
    return sectionInsets
  }

  func collectionView(_ collectionView: UICollectionView,
                      layout collectionViewLayout: UICollectionViewLayout,
                      minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return sectionInsets.left
  }

当在cellForItemAt 中执行时,单元格具有正确的大小,在此函数中创建阴影并且具有正确的宽度。

最后一件事是只调整宽度的大小,高度保持我想要的。

有没有人知道为什么在 reloadData 之后宽度被错误地调整了?

【问题讨论】:

  • 也值得分享您的cellForItemAt,以防有明显差异。另外,你的意思是使用let paddingSpace = sectionInsets.left * 3

标签: swift uicollectionview swift5


【解决方案1】:

我在扩展 UICollectionViewDelegateFlowLayout 时遇到了类似的问题,结果证明在故事板(Size Inspector)中将 collectionView 的 Estimated Size 设置为“None”解决了这个问题。

如 Xcode 11 发行说明中所述:

UICollectionView 中的单元格现在可以通过自动布局自行调整大小 画布中的受限视图。选择现有的行为 集合视图,为集合视图的启用“自动” 估计大小,以及“自动”从大小中获取单元格的大小 检查员。 如果在 iOS 13 之前部署,您可以激活 self sizing collection 通过调用 performBatchUpdates(_:completion:) 查看单元格 视图加载()。 (45617083)

因此,新创建的 collectionView 将属性“估计大小”设置为“自动”,并且单元格的大小是根据其子视图尺寸计算的,因此忽略 UICollectionViewDelegateFlowLayout 扩展方法,即使它们被调用。

【讨论】:

  • 谢谢!!正是故事板中 collectionView 中的设置覆盖了其他所有内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2019-12-12
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
相关资源
最近更新 更多