ios - UICollectionViewCell 周围的间距相等

标签 ios gridview layout uicollectionview uicollectionviewlayout

我希望所有单元格之间以及屏幕边框和最近的单元格之间的间距相等。基本上是这样的。内部和周围的间距相等。

enter image description here

我设法通过设置这样的值在界面生成器中测试这一点。我将单元格大小设置为 110,最小间距设置为 0,将所有部分插入设置为 10。

enter image description here

而且它在 IB 中看起来很完美。

enter image description here

但是当我运行它时(在 iPad Air 2 中),它看起来像这样。

enter image description here

请注意单元格之间的间距更大。我还尝试通过实现 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/

相关文章:

java - 如何在 android 的 gridview 中添加搜索功能?

android - 如何确定 Android 中的 TextView 适合多少文本?

android - 如何在菜单项中添加分隔符?

ios - NSCoding 和保存/加载默认值问题

android - Flutter - 使用正则表达式验证电话号码

c# - 窗体 View 被清除

algorithm - 容器中的最佳图像对齐,使它们的尺寸最大(调整大小)

ios - 从 NSUserDefaults 字典 iOS 中删除所有键

ios - TabBar - 导航回根级别

asp.net - 在数据显示在 GridView 中之前编辑数据