优先考虑UICollectionViewCell的间距大小

时间:2018-01-29 19:35:49

标签: ios swift uicollectionview uicollectionviewcell uicollectionviewlayout

我有一个UICollectionView,我希望每行有3个单元格。我希望每个单元格之间有一个固定的间距,并且单元格的大小会动态调整。

是的,我可以设置最小单元格间距。但是我想要修复这个间距。当单元格大小调整时,如何将单元格之间的间距设置为常量?

2 个答案:

答案 0 :(得分:1)

以下是我解决它的方法:

extension ViewController: UICollectionViewDelegateFlowLayout {

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        //Calculate cell width
        let spacingTotal = CGFloat((cellSpacing * 2) + (marginSpacing * 2))
        let screenWidth = UIScreen.main.bounds.width
        let cellWidth = (screenWidth - spacingTotal) / 3.0

        //Maintain ratio for cell height
        let widthToHeighRatio = CGFloat(102 / 94)
        let cellHeight = cellWidth * widthToHeighRatio

        return CGSize(width: cellWidth, height: cellHeight)
    }
}

其中cellSpacing是最小单元格间距的值。 margingSpacing是collectionView的右边距和左边距的总值。

还要注意我保持细胞大小的比例;我正在使用的设计显示一个102 x 94的单元格,所以我保持每个屏幕尺寸的比例。

以下是iPhone SE和iPhone X的外观:

enter image description here enter image description here

答案 1 :(得分:0)

实现sizeForItem并点缀他,假设间距为10

width = (self.view.frame.size.width -  2 * 10)/3