Настраиваемые поля и ограничения для отдельных ячеек UICollectionViewCell - PullRequest
0 голосов
/ 06 августа 2020

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

Вопросы:

  1. Как мне go о добавление ограничений к этим ячейкам, чтобы они оставались равномерно распределенными по нескольким макетам iPhone?

  2. Как мне убедиться, что ячейка не «просачивается» в следующую, убедившись, что Может ли в данный момент на экране видна одна ячейка?

Вот мой ток

Спасибо!

1 Ответ

0 голосов
/ 06 августа 2020

Вы должны реализовать три метода в UICollectionViewDelegateFlowLayout, чтобы он работал правильно.

  1. func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
  2. func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat
  3. func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat

Возвращает вычисленные значения для каждого из них, и ячейки будут размещены правильно. Вот пример реализации.

extension ViewController: UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let spacing: CGFloat = 16 * 2
        return .init(width: collectionView.frame.size.width - spacing, height: 100)
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { 16 }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { 0 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...