我正在计算UICollectionView
单元格itemSize,以便如果传递了计数,它将相应地计算大小。
我考虑了sectionInset.left
和sectionInset.right
以及minimumInteritemSpacing
在iPhone XR中进行测试时,我得到的finalW
为124.66666666666667。这是当numberOfItems
作为3传递时,左右插图分别为10,而最小间隔间距为10。
这里的问题是它显示2个项目而不是3个。
如果我有CGSize对象(124.666,124.66),则进一步调试它会显示3个项目
但是,如果我不作任何舍入而保留原样,则仅显示2个项目。即(124.66666666666667,124.66666666666667)
不确定计算是否错误或我做错了什么。
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return calculateItemSize(numberofItems: 3)
}
func calculateItemSize(numberofItems:Int) -> CGSize{
//Max Width
let maxW = self.collectionList.frame.width
let flowLayoutObject = self.collectionList.collectionViewLayout as! UICollectionViewFlowLayout
//Left and right inset
let leftInset = flowLayoutObject.sectionInset.left
let rightInset = flowLayoutObject.sectionInset.right
//UsableW
let usableW = maxW - leftInset - rightInset
let usableWWithSpacing = usableW - CGFloat(numberofItems-1)*flowLayoutObject.minimumInteritemSpacing
let finalW = (usableWWithSpacing) / CGFloat(numberofItems)
return CGSize(width: finalW, height: finalW)
}