UICollectionView 间距每隔一行不正确

UICollectionView spacing is incorrect every other row

我正在为 UICollectionView 创建一个自定义流布局,我正在尝试使间距正确。尽管每隔一行设置minimumLineSpacing = 2,但每行图像之间只有1px,可以看出here。我相信这是因为 Apple 现在使用点而不是像素,但你如何解决这个问题?这是我在 CollectionViewController 中设置流布局的代码:

    let screenWidth = self.collectionView?.bounds.size.width
    let flowLayout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()

    flowLayout.minimumInteritemSpacing = 2
    flowLayout.minimumLineSpacing = 2

    let totalSpacing = flowLayout.minimumInteritemSpacing * 4.0
    let imageSize = (screenWidth!-totalSpacing)/4.0

    flowLayout.itemSize = CGSize(width: imageSize, height: imageSize)

我明白了。如果单元格的高度是一个重复的浮点数,则每行之间的间距将每隔一行交替。例如,如果我想放置三个单元格,每个单元格之间的间距为 2 点,则每个单元格在 iPhone 6 上的宽度为 123.6666666667 点。(iPhone 6 的宽度为 375 点,导致计算 (375-4)/3 = 123.6666666667)。如果我继续使用与宽度相同的高度值,则点的最后 2/3 将导致行间距交替,如 here.

所示

我发现单元格高度不一定非得是整数才能解决这个问题;将其设置为 123.5 将解决此问题,但整数当然也可以。