我有一个UICollectionView,我希望每行有3个单元格。我希望每个单元格之间有一个固定的间距,并且单元格的大小会动态调整。
是的,我可以设置最小单元格间距。但是我想要修复这个间距。当单元格大小调整时,如何将单元格之间的间距设置为常量?
答案 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的外观:
答案 1 :(得分:0)
实现sizeForItem并点缀他,假设间距为10
width = (self.view.frame.size.width - 2 * 10)/3