我有一个UICollectionView,我已经实现了委托来计算单元格之间的间距为0的单元格的宽度。
它本身很好用,但当我把它放在一个小于设备大小的容器视图中时,iOS错误地计算出单元格之间的间距,增加了一个我不想要的水平空间。
我已经验证了我用来计算单元格大小的宽度是正确的,所以我不确定导致问题的原因。
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let widthPerItem = view.frame.width / itemsPerRow
return CGSize(width: widthPerItem, height: 60)
}
答案 0 :(得分:1)
您正在根据view
的大小计算单元格大小。由于collectionView
没有占据屏幕的整个宽度,因此您获得的值不正确。相反,您应该将计算基于collectionView
本身的宽度。
使用bounds
的{{1}}代替collectionView
的{{1}}:
frame
答案 1 :(得分:0)
好的,问题实际上与我的uicollectionviewcontroller无法正确调整其父容器视图有关。更改为带有嵌入式uicollectionview加上约束的uiviewcontroller可以解决问题。