在ContainerView

时间:2018-04-28 13:50:17

标签: ios swift uicollectionview

我有一个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)
}

2 个答案:

答案 0 :(得分:1)

您正在根据view的大小计算单元格大小。由于collectionView没有占据屏幕的整个宽度,因此您获得的值不正确。相反,您应该将计算基于collectionView本身的宽度。

使用bounds的{​​{1}}代替collectionView的{​​{1}}:

frame

答案 1 :(得分:0)

好的,问题实际上与我的uicollectionviewcontroller无法正确调整其父容器视图有关。更改为带有嵌入式uicollectionview加上约束的uiviewcontroller可以解决问题。