我希望所有单元格之间以及屏幕边框和最近单元格之间的间距相等。基本上是这样的。内部和周围的间距相等。
我设法通过设置这样的值在界面构建器中测试它。我将单元格大小设置为110,将最小间距设置为0,将所有 Section Insets 设置为10.
它在IB中看起来很完美。
然而,当我运行它(在iPad Air 2中)时,它看起来像这样。
请注意,单元格之间的间距更大。我还尝试通过从UICollectionViewDelegateFlowLayout
实现以下方法,仅从代码中执行此操作。
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
return CGSize(width: 110, height: 110)
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
产生了相同的结果。有人可以告诉我如何纠正这个问题?我更喜欢用代码来做这件事。但我对任何事情都持开放态度。
答案 0 :(得分:2)
不幸的是,这是UICollectionViewFlowLayout
默认工作的方式。这是因为您指定了精确的部分插入,但最小的插入空间。
要做你要求的事情,你主要有两种方法可以根据你想要的最终结果来做。两者都必须通过代码手动完成。
•放大细胞离开确切的空间(相同的空间,更大的细胞)
•计算空间并更改插图以匹配它(相同的单元格,更大的空间)
两者都可以通过设置布局对象上的值(并使其无效)或通过委托返回值来完成。