Я использую UICollectionView Compositional Layout и хочу иметь заголовок, который придерживается вершины
, это должно быть возможно с
header.pinToVisibleBounds = true
, однако во время прокрутки заголовок странным образом затеняется, выглядит как ошибка ... более того, при перезагрузке выглядит только те ячейки, которые были вне видимого экрана, затемняйте заголовок
![swift](https://i.stack.imgur.com/rX521.gif)
вы можете увидеть это в этом видео https://www.dropbox.com/s/n5myzfceuiwzb39/stackoverflow-unsatable-header.mov?dl=0
вот как строится весь макет
func buildLayout() -> UICollectionViewCompositionalLayout {
// cells
let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(0.5), heightDimension: .absolute(90))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
item.contentInsets = NSDirectionalEdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0)
let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1), heightDimension: .absolute(90))
let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitem: item, count: 2)
group.contentInsets = NSDirectionalEdgeInsets(top: 0, leading: 20, bottom: 0, trailing: 20)
group.interItemSpacing = .fixed(10)
let section = NSCollectionLayoutSection(group: group)
section.interGroupSpacing = 10
section.contentInsets = NSDirectionalEdgeInsets(top: 20, leading: 0, bottom: 20, trailing: 0)
// header
let headerSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .absolute(200))
let header = NSCollectionLayoutBoundarySupplementaryItem(layoutSize: headerSize, elementKind: UICollectionView.elementKindSectionHeader, alignment: .top)
header.pinToVisibleBounds = true
header.zIndex = Int.max
section.boundarySupplementaryItems = [header]
let configuration = UICollectionViewCompositionalLayoutConfiguration()
return UICollectionViewCompositionalLayout(section: section, configuration: configuration)
}
Что такое обходной путь? или каким другим способом иметь «плавающий» заголовок?
ПРИМЕЧАНИЕ 1:
выглядит, когда заголовок присоединен к configuration.boundarySupplementaryItems
он ведет себя как ожидалось ... через это может быть решением текущего случая, он не решает общую проблему с разделом ... (вы также должны установить zIndex на очень большое число)
do {
center.contentInsets.top = 0
let headerSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .absolute(200))
let header = NSCollectionLayoutBoundarySupplementaryItem(layoutSize: headerSize, elementKind: UICollectionView.elementKindSectionHeader, alignment: .top)
header.pinToVisibleBounds = true
header.zIndex = Int.max // !!! IMPORTANT
//header.extendsBoundary = true
configuration.boundarySupplementaryItems = [header]
}