Программно получить высоту секции просмотра коллекции за пределами методов протокола просмотра коллекции - PullRequest
0 голосов
/ 08 мая 2020

У меня есть приложение для чата, и коллекция чатов View создается в файле модуля, который у меня нет доступа для изменения. Каждое сообщение чата - это раздел в collectionView. Я могу определить количество разделов (сообщений чата), вызвав myCollectionView.numberOfSections.

Я хочу определить высоту каждого раздела в collectionView. Как я могу сделать это программно без использования методов протокола collectionView.

1 Ответ

0 голосов
/ 08 мая 2020

можно попробовать так:

class ThirdPartyViewController: UIViewController  {

    var collectionView: UICollectionView!

}

class YourViewController: UIViewController, UICollectionViewDelegateFlowLayout {

    let vc = ThirdPartyViewController()
    var collectionView: UICollectionView { return vc.collectionView }
    var originDelegate: UICollectionViewDelegateFlowLayout { return vc as! UICollectionViewDelegateFlowLayout }

    override func viewDidLoad() {
        super.viewDidLoad()

        collectionView.delegate = self
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {

        //return custom value
        return CGSize(width: 100, height: 100)
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

        //return origin value
        return originDelegate.collectionView!(collectionView, layout: collectionViewLayout, sizeForItemAt: indexPath)
    }
}
...