Поместите элемент NSCollectionLayoutSupplementaryItem в нижнюю часть содержащей группы

#ios #swift #uicollectionviewlayout #uicollectionviewcompositionallayout

#iOS #swift #uicollectionviewlayout #uicollectionviewcompositionallayout

Вопрос:

Контекст:

Я создаю ячейки, используя UICollectionViewCompositionalLayout и расчетную высоту, основанную на динамическом тексте внутри ячеек. Каждая ячейка имеет дополнительный элемент (кнопку) в нижнем конце угла. Небольшой отрывок кода, который создает макет:

 // List item
let estimatedListItemHeight = CGFloat(240)

let listItemSize = NSCollectionLayoutSize(
    widthDimension: .fractionalWidth(1/3),
    heightDimension: .estimated(estimatedListItemHeight)
)

let listItem = NSCollectionLayoutItem(layoutSize: listItemSize, supplementaryItems: [makeOverflowButton()])

// List item group
let listItemGroupSize = NSCollectionLayoutSize(
    widthDimension: .fractionalWidth(1),
    heightDimension: .estimated(estimatedListItemHeight)
)

let listItemGroup = NSCollectionLayoutGroup.horizontal(
    layoutSize: NSCollectionLayoutSize(
        widthDimension: .fractionalWidth(1),
        heightDimension: .estimated(estimatedListItemHeight)
    ),
    subitem: listItem,
    count: 3
)
 

Затем я использую отдельный метод для создания дополнительного элемента:

 func makeOverflowButton() -> NSCollectionLayoutSupplementaryItem {

    let overflowSize = NSCollectionLayoutSize(
        widthDimension: .fractionalWidth(1),
        heightDimension: .estimated(25)
    )

    return NSCollectionLayoutSupplementaryItem(
        layoutSize: overflowSize,
        elementKind: OverflowSupplementaryButton.supplementaryViewKind,
        containerAnchor: NSCollectionLayoutAnchor(edges: [.bottom, .trailing])
    )
}
 

Проблема:

Поскольку ячейки являются динамическими по высоте, дополнительные элементы не находятся в одном y положении друг с другом. Однако я хочу, чтобы они были динамическими, а также чтобы каждый дополнительный элемент был одинаковым y . Смотрите изображение ниже:

запрошенный результат

Возможно, идея может заключаться в том, чтобы вместо этого иметь возможность помещать дополнительные элементы в их содержащую группу ( listItemGroup в моем отрывке выше), но есть ли способ поместить дополнительные элементы в a NSCollectionLayoutGroup ?

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