UICollectionView sectionInsets не соблюдается при использовании ячеек заголовка - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь создать представление коллекции, которое имеет ячейку заголовка (динамический размер) и несколько «нормальных» ячеек содержимого (также динамического размера). Следовательно, представление collection инициализируется следующим образом:

private lazy var timelineCollectionView: UICollectionView = {
        let flowLayout = UICollectionViewFlowLayout()
        flowLayout.scrollDirection = .vertical
        flowLayout.sectionInset = UIEdgeInsets(top: self.coloredTitleBarHeight, left: 0, bottom: 0, right: 0) // assume that coloredTitlebarHeight is a constant of 120
        flowLayout.estimatedItemSize = CGSize(width: self.view.frame.width, height: 10)
        flowLayout.minimumInteritemSpacing = 0
        flowLayout.minimumLineSpacing = 0

        let cv = UICollectionView(frame: .zero, collectionViewLayout: flowLayout)
        cv.alwaysBounceVertical = true
        cv.contentInsetAdjustmentBehavior = .never 
        cv.backgroundColor = .clear
        cv.scrollIndicatorInsets = UIEdgeInsets(top: self.coloredTitleBarHeight - self.getStatusBarHeight(), left: 0, bottom: 0, right: 0)

        cv.delegate = self
        cv.dataSource = self
        cv.register(TLContentCell.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "content-header-cell")
        cv.register(TLContentCell.self, forCellWithReuseIdentifier: "comment-cell")

        return cv
    }()

CollectionView является частью ViewController, который соответствует следующим протоколам : UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout

Затем я использую следующий код для создания ячейки заголовка:

func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
        let cell = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "content-header-cell", for: indexPath) as! TLContentCell

        cell.timelineContent = tlContentItem
        cell.delegate = self

        return cell
    }

И последнее, но не менее важное: снятие очереди с обычных ячеек:

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 1
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "comment-cell", for: indexPath)

        return cell
    }

Вывод:

CollectionView отображает ячейку заголовка, а также ячейки элемента, однако вставки раздела не применяются.

Я был бы очень рад, если бы вы могли дать мне какое-либо предложение относительно этого странного поведения.

1 Ответ

0 голосов
/ 16 января 2020

Вставки раздела применяются к содержимому только в UICollectionViewFlowLayout.

Использование вставок секций для настройки полей вашего контента

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

enter image description here

...