我知道项目之间只有最小间距,您可以通过尺寸检查员或
来实现 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets
但是当我在更大的模拟器上运行时,我的细胞项之间的距离正在增加,并且没有按预期显示。
是否有任何方法可以设置它们之间的最大尺寸?
答案 0 :(得分:1)
逻辑上,您应该记住另一个因素,即在集合视图中的项目之间设置空格,即单元格的 size 。如果您按原样获取单元格(使用其默认大小) - 并且我的假设是您的情况 - 它将在集合视图中静态地出列,即单元格的大小将按原样出现。 / p>
所以,你应该做的是告诉你要在集合视图中显示的单元格的所需大小(宽度)是什么,符合
UICollectionViewDelegateFlowLayout
并实施collectionView(_:layout:sizeForItemAt:)
:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
// let's assume that each row in the collection view should contains 3 cells:
let desiredWidth = collectionView.frame.width / 3
// height is also equals to the width to be a square...
return CGSize(width: desiredWidth, height: desiredWidth)
}
此时,如果您将项目之间的最小间距设置为零,则每行应包含三个单元格,它们之间没有空格。
如果您的目标是在单元格之间设置一点空间,则应在声明单元格所需的宽度时进行反映,例如:
// since each row contains 3 cells, subtracting 2 from each cell width
// means it would be 6 points (3 * 2) divided at the whole row (2 spaces, 3 points for each)
let desiredWidth = collectionView.frame.width / 3 - 2