Я использую UICollectionView Compositional Layout и хочу иметь заголовок, который придерживается вершины
, это должно быть возможно с
header.pinToVisibleBounds = true
, однако во время прокрутки заголовок странным образом затеняется, выглядит как ошибка ... более того, при перезагрузке выглядит только те ячейки, которые были вне видимого экрана, затемняйте заголовок
вы можете увидеть это в этом видео 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]
}