渲染 UICollectionView 的单元格时不遵守部分插图

Posted

技术标签:

【中文标题】渲染 UICollectionView 的单元格时不遵守部分插图【英文标题】:Section Insets not respected when rendering the cells of UICollectionView 【发布时间】:2016-05-12 13:22:22 【问题描述】:

我有一个包含两个部分的 UICollectionView。 我从情节提要中给出了 left = 5 和 right = 5 的部分插图。 我对这两个部分的单元格使用相同的 .xib。 我在sizeForItemAtIndexPath中输入单元格的大小

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize 

        let itemWidth = self.collectionViewTrending.bounds.size.width - 10
        if(indexPath.section == 0) 

                return CGSizeMake(itemWidth , 200)

         else 

            let product = self.products.objectAtIndex(indexPath.row) as! Product
            let imageHeight = CGFloat(product.imageHeight)
            return CGSizeMake(itemWidth, imageHeight * 0.81)
        



   

问题是这样的:

对于第 0 部分,单元格居中并尊重部分插图。

对于第 1 部分,左侧部分插图受到尊重,但右侧不被尊重,第 1 部分的所有单元格的右边缘都与 collectionView 的右边缘接触。

为什么会发生这种情况,我该如何解决?

【问题讨论】:

【参考方案1】:

部分插入适用于整个部分:

左插图影响节的左边缘和该节中第一个单元格的左边缘之间的空间。

右插图影响节中最后一个单元格的右边缘与该节的右边缘之间的空间。

换句话说,您看到的行为可能是因为您在第 0 节中只有一个单元格,而在第 1 节中有多个单元格。

您可能想要的是单元格之间的空间,以在每个单元格周围创建边框外观。

为此,请在情节提要中设置集合视图的 Min Spacing / For Cells 属性。或者在 collectionView minimumInteritemSpacingForSectionAtIndex 委托方法中动态设置。

【讨论】:

以上是关于渲染 UICollectionView 的单元格时不遵守部分插图的主要内容,如果未能解决你的问题,请参考以下文章

移除前一个单元格时,UiCollectionView 跳转到下一个单元格

iOS中删除单元格时UICollectionView的动画时间

选择单元格时 UICollectionView 正在滚动

如何在锁定其中一些单元格时重新排序 UICollectionView 单元格

启用分页和每页多个单元格时奇怪的 UICollectionView 行为

当 UICollectionView 和 UITableView 没有行/单元格时,“未找到行”