I'm trying to build a photo grid using UICollectionViewCompositionalLayout
where the third picture is shown bigger, all the other pictures should be small.
I've come this far:
The problem is that this layout keeps repeating itself, so now one out of every six pictures is shown bigger, instead of it only happening in the first group.
This is my layout code:
private func createLayout() -> UICollectionViewLayout {
// Three photos next to eachother
let tripletItem = NSCollectionLayoutItem(layoutSize: NSCollectionLayoutSize(widthDimension: .fractionalWidth(1 / 3), heightDimension: .fractionalHeight(1)))
tripletItem.contentInsets = .init(top: 2, leading: 2, bottom: 2, trailing: 2)
let tripletGroup = NSCollectionLayoutGroup.horizontal(
layoutSize: NSCollectionLayoutSize(widthDimension: .fractionalWidth(1), heightDimension: .fractionalWidth(1 / 3)),
subitems: [tripletItem]
)
// Two small photos with a bigger photo next to it
let mainItem = NSCollectionLayoutItem(
layoutSize: NSCollectionLayoutSize(
widthDimension: .fractionalWidth(2 / 3),
heightDimension: .fractionalHeight(1)
))
mainItem.contentInsets = NSDirectionalEdgeInsets(
top: 2,
leading: 2,
bottom: 2,
trailing: 2
)
let pairItem = NSCollectionLayoutItem(
layoutSize: NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1),
heightDimension: .fractionalHeight(0.5)
))
pairItem.contentInsets = NSDirectionalEdgeInsets(
top: 2,
leading: 2,
bottom: 2,
trailing: 2
)
let pairGroup = NSCollectionLayoutGroup.vertical(
layoutSize: NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1 / 3),
heightDimension: .fractionalHeight(1)
),
subitem: pairItem,
count: 2
)
let mainWithPairGroup = NSCollectionLayoutGroup.horizontal(
layoutSize: NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1),
heightDimension: .fractionalWidth(2 / 3)
),
subitems: [pairGroup, mainItem]
)
let nestedGroup = NSCollectionLayoutGroup.vertical(
layoutSize: NSCollectionLayoutSize(
widthDimension: .fractionalWidth(1),
heightDimension: .fractionalWidth(1)
),
subitems: [
mainWithPairGroup,
tripletGroup,
]
)
let section = NSCollectionLayoutSection(group: nestedGroup)
let layout = UICollectionViewCompositionalLayout(section: section)
return layout
}
How do I make this so that the first group (mainWithPairGroup
) is only used once, and then the tripletGroup
repeats over and over?