UICollectionView中具有连续的确切项目数-舍入值

时间:2019-01-01 04:36:13

标签: ios uicollectionview uicollectionviewlayout cgsize

我正在计算UICollectionView单元格itemSize,以便如果传递了计数,它将相应地计算大小。

我考虑了sectionInset.leftsectionInset.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)

    }

0 个答案:

没有答案