【发布时间】: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