Я создаю представление коллекции, где разделы имеют содержимое с вертикальной прокруткой (с видом с бесконечной прокруткой), и все разделы размещаются рядом друг с другом (здесь также используется представление с бесконечной прокруткой, но горизонтально). Похоже на это изображение .
Я столкнулся с несколькими проблемами:
- Вид заголовка находится под представлением коллекции в иерархии представлений (это не ' t
hidden
или enabled
, это просто покрыто остальной частью представления коллекции), раздел смещения не помогает, потому что он скрыт под всем представлением коллекции, а не только с разделом. Вот снимок экрана , где справа вверху находятся первые подпредставления в иерархии представлений, а слева - последние (с вырезанными несвязанными представлениями сзади). - Мои элементы имеют динамически сгенерированный размер ( реализовано с автоматическим макетом в файле
.xib
), но значение .estimated()
композиционного макета не изменяется на заданную высоту содержимого ячейки (ширина остается одинаковой для всех ячеек).
Вот мой код:
func createCompositionalLayout() -> NSCollectionViewLayout {
let itemSize = NSCollectionLayoutSize(widthDimension: .absolute(300), heightDimension: .estimated(170))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
let groupSize = NSCollectionLayoutSize(widthDimension: .absolute(300), heightDimension: .estimated(150))
let group = NSCollectionLayoutGroup.vertical(layoutSize: groupSize, subitem: item, count: 1)
let section = NSCollectionLayoutSection(group: group)
section.interGroupSpacing = 30
section.orthogonalScrollingBehavior = .continuous
let layoutSectionHeaderItemSize = NSCollectionLayoutSize(widthDimension: .absolute(300), heightDimension: .absolute(200))
let layoutSectionHeaderItem = NSCollectionLayoutBoundarySupplementaryItem(layoutSize: layoutSectionHeaderItemSize, elementKind: NSCollectionView.elementKindSectionHeader, alignment: .top)
section.boundarySupplementaryItems = [layoutSectionHeaderItem]
let configuration = NSCollectionViewCompositionalLayoutConfiguration()
configuration.scrollDirection = .horizontal
configuration.interSectionSpacing = 30
let layout = NSCollectionViewCompositionalLayout(section: section, configuration: configuration)
return layout
}