Как использовать strechyHeader и stickyHeader в одном и том же CollectionView? - PullRequest
0 голосов
/ 18 апреля 2019

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

класс HeaderLayout: UICollectionViewFlowLayout {

override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
    let layoutAttributes = super.layoutAttributesForElements(in: rect)


    let offset = collectionView!.contentOffset

    if offset.y < 0 {
        let deltaY = abs(offset.y)
        for attributes in layoutAttributes!{
            if let elementKind = attributes.representedElementKind {
                if elementKind == UICollectionView.elementKindSectionHeader && attributes.indexPath.section == 0 {
                    var frame = attributes.frame
                    frame.size.height = max(0, headerReferenceSize.height + deltaY)
                    frame.origin.y = frame.minY - deltaY
                    attributes.frame = frame
                }

            }
        }
    }

    return layoutAttributes
}

Я пытался управлять другим липким заголовком с помощью:

       if elementKind == UICollectionView.elementKindSectionHeader && attributes.indexPath.section == 1 {
        sectionHeaderPinToVisibleBounds = true
    }

Но как только я установил свойство sectionHeaderPinToVisibleBounds, все заголовки стали нечеткими ...

...