将单个 UICollectionViewCell 对齐到 collectionView 的左侧

Posted

技术标签:

【中文标题】将单个 UICollectionViewCell 对齐到 collectionView 的左侧【英文标题】:align single UICollectionViewCell to the left of the collectionView 【发布时间】:2020-01-31 08:36:46 【问题描述】:

我有一个位于 tableView 单元格内的 collectionView。 collectionView 有多个部分。如果一个部分只有一个单元格,则该单元格将居中显示。如何将该单个单元格对齐到左侧?

collectionView 有以下flowLayout:

let flowLayout = UICollectionViewFlowLayout()
flowLayout.scrollDirection = .vertical
flowLayout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
flowLayout.minimumInteritemSpacing = 0
flowLayout.minimumLineSpacing = 0
flowLayout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize
collectionView.setCollectionViewLayout(flowLayout, animated: true)

【问题讨论】:

你看过这个:***.com/questions/22539979/… 该链接的所有答案都将所有 collectionViewCells 移到左侧,因此所有部分的所有单元格。我只希望只有一个单元格的部分具有这种行为。 如果一个部分只有一个单元格,可以再添加一个ghost单元格并将其隐藏,那么第一个单元格将左对齐。 【参考方案1】:

由于sectionInsetfunc collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets 协议相同,因此可以调用该协议来知道哪个部分只剩下一个单元格。

你可以替换:

flowLayout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)

与:

  func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets 

    if collectionView.numberOfItems(inSection: section) == 1 

         let flowLayout = collectionViewLayout as! UICollectionViewFlowLayout

        return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: collectionView.frame.width - flowLayout.itemSize.width)

    

    return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)


这个红色单元格是第二节中唯一剩下的一个,并且是左对齐的:

【讨论】:

【参考方案2】:

我有同样的问题。 我的解决方案是更改 collectionView 的估计大小。

自动 -> 无

【讨论】:

以上是关于将单个 UICollectionViewCell 对齐到 collectionView 的左侧的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮 UICollectionViewCell 宽度和高度更改

单个笔尖的多个视图

如何以编程方式使用 UIImageView Overlap 修复 UICollectionViewCell

如何使用清晰的背景颜色向 UICollectionViewCell 添加阴影?

如何从特定的 UICollectionViewCell 中删除 firebase 子节点 - Swift

无法将 UILabel 添加到 UICollectionViewCell