我希望所有单元格之间以及屏幕边框和最近的单元格之间的间距相等。基本上是这样的。内部和周围的间距相等。
我设法通过设置这样的值在界面生成器中测试这一点。我将单元格大小设置为 110,最小间距设置为 0,将所有部分插入设置为 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
}
这产生了相同的结果。有人可以告诉我如何纠正这个问题吗?我更喜欢通过代码来完成此操作。但我对任何事情都持开放态度。
最佳答案
不幸的是,这就是UICollectionViewFlowLayout
默认的工作方式。这是因为您指定了精确的部分插入但最小的项目间空间。
要完成您所要求的操作,您主要有两种方法来完成,具体取决于您想要的最终结果。两者都必须通过代码手动完成。
• 放大单元格以留下精确的空间(相同空间,更大的单元格)
• 计算空间并更改插图以匹配它(相同的单元格,更大的空间)
这两种方法都可以通过在布局对象上设置值(并使之无效)或通过委托(delegate)返回值来完成。
关于ios - UICollectionViewCell 周围的间距相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34908501/