Compositional Layout — это гибкий механизм создания раскладок коллекций (UICollectionView), представленный в iOS 13. Он позволяет описывать структуру секций и элементов декларативно, упрощая создание сложных и адаптивных UI.
Основные преимущества:
UICollectionViewFlowLayout.Ключевые компоненты:
NSCollectionLayoutItem: Описывает элемент в коллекции. Определяет его размер относительно содержащей его группы.NSCollectionLayoutGroup: Описывает группу элементов. Может быть вертикальной, горизонтальной или кастомной. Определяет размер группы относительно содержащей ее секции.NSCollectionLayoutSection: Описывает секцию в коллекции. Содержит группы и управляет их расположением. Определяет поведение секции (например, прокрутка).NSCollectionLayoutBoundarySupplementaryItem: Используется для добавления дополнительных элементов к секции (хедеры, футеры).UICollectionViewCompositionalLayout: Класс макета, который собирает секции в финальную раскладку.Пример создания простой секции с горизонтальной прокруткой:
swift
Для создания более сложных интерфейсов можно комбинировать различные типы групп и секций, добавлять декоративные элементы и использовать supplementary items.
Compositional Layout тесно связан с Diffable Data Sources (UICollectionViewDiffableDataSource), что упрощает управление данными коллекции и анимацию изменений. Объединение этих двух технологий позволяет создавать современные, эффективные и легко поддерживаемые пользовательские интерфейсы.