在UICollectionView中计算80%的屏幕和20%

时间:2017-05-11 08:12:21

标签: ios swift uicollectionview size cgsize

我编写的函数返回UICollectionView的单元格大小。

   fileprivate func getCellSize(with row: Int) -> CGSize {

        let percentage: CGFloat = row == 0 ? 0.8 : 0.2
        let width = self.collectionView?.frame.width
        let height = self.collectionView?.frame.height

        let expectedWidth = width! * percentage
        let expectedHeight = height! * 0.5

        return CGSize(width: expectedWidth, height: expectedHeight)
    }

这个功能工作正常,但它有一个小问题,它与它的接缝四舍五入。因为我收到的布局没有完全覆盖细胞,因为它是预期的。

iPhone 6仿真器的功能结果如下:

0:ROW =(533.60000000000002,187.5)

1:ROW =(133.40000000000001,187.5)

实际结果:

enter image description here

预期结果:

enter image description here

1 个答案:

答案 0 :(得分:2)

怎么样

if let frameWidth = self.collectionView?.frame.width {
     let row0Width = Int(Double(frameWidth) * 0.8)
     let otherWidth = frameWidth - row0Width
     let expectedWidth = row == 0 ? row0Width : otherWidth
     // ...
}

避免四舍五入问题?