温馨提示:本文翻译自stackoverflow.com,查看原文请点击:swift - align single UICollectionViewCell to the left of the collectionView

swift - 将单个UICollectionViewCell对齐到collectionView的左侧

发布于 2020-03-29 12:56:03

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

tableView单元格内的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)

查看更多

查看更多

提问者
WalterBeiter
被浏览
26
K4747Z 2020-02-06 23:58

由于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)

}

该红色单元格是第二部分中剩下的唯一一个,并且保持对齐:

在此处输入图片说明

发布
问题

分享
好友

手机
浏览

扫码手机浏览