Получить конкретную высоту заголовка в collectionView(: referenceSizeForHeaderInSection)?

Можно ли получить высоту заголовка до collectionView(: referenceSizeForHeaderInSection) называется? То, что я хочу сделать, это установить высоту заголовка на основе UICollectionReusableView в моей раскадровке.

Я попробовал это решение ниже, но collectionView(: referenceSizeForHeaderInSection) называется раньше collectionView(: viewForSupplementaryElementOfKind), Он установлен на начальную высоту по умолчанию 0,0. Итак, я не могу установить высоту моего текущего заголовка.

let headerHeight = 0.0

func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
 guard kind == UICollectionElementKindSectionHeader else {
      fatalError()
 }

 let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "SectionHeader", for: indexPath) as! SectionHeader

 //try to set height here
 headerHeight = header.frame.size.height

 return header

 }

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

    if (section == 0) { //headerHeight = 0.0 here
        return CGSize(width: collectionView.frame.size.width, height: headerHeight)

    } else {
        return CGSize(width: collectionView.frame.size.width, height: collectionView.frame.size.height)
    }
}

Есть ли способ использовать dequeueReusableSupplementaryView(:_) в collectionView(: referenceSizeForHeaderInSection)?

0 ответов

Другие вопросы по тегам