выровнять одиночный UICollectionViewCell слева от collectionView - PullRequest
6 голосов
/ 31 января 2020

У меня есть collectionView, который находится внутри ячейки tableView. У collectionView есть несколько разделов. Если раздел имеет только одну ячейку, ячейка отображается по центру. Как я могу выровнять эту единственную ячейку слева?

collectionView inside tableView cell

В 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)

1 Ответ

3 голосов
/ 06 февраля 2020

Поскольку sectionInset совпадает с протоколом func 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)

}

Эта красная ячейка является единственной, оставшейся во втором разделе, и выровнена по левому краю:

enter image description here

...