В этой статье хочется познакомиться к UICollectionViewCompositionalLayout и с его помощью создать UICollectionView с прокручивающимися секциями, а затем еще немного более их кастомизировать, чтобы показать как просто с помощью UICollectionViewCompositionalLayout мы можем создавать UICollectionView, которые выглядят именно так как нам необходимо. Статья основана на документации apple Implementing Modern Collection Views https://developer.apple.com/documentation/uikit/views_and_controls/collection_views/implementing_modern_collection_views Compositional layouts - это декларативный вид API, который позволяет нам создавать большие макеты путем объединения небольших групп макетов. Compositional layouts имеют иерархию, состоящую из Item, Group, Sections, and Layout. Чтобы создать любой Compositional layouts, необходимо реализовать следующие четыре класса: NSCollectionLayoutSize: Размеры ширины и высоты относятся к типу NSCollectionLayoutDimension, которые могут быть определены путем установки доли ширины/высоты макета (в процентах по отношению к его контейнеру) или путем установки абсолютных или расчетных размеров. NSCollectionLayoutItem: Это ячейка нашего макета, которая отображается на экране в зависимости от размера. NSCollectionLayoutGroup: содержит NSCollectionLayoutItem в горизонтальной, вертикальной или пользовательской формах. NSCollectionLayoutSection: используется для инициализации секции путем передачи NSCollectionLayoutGroup. Секции в конечном итоге составляют СompositionalLayout. Sections и items в СompositionalLayout соответствуют Sections и items класического СollectionViewDataSource. Группы, однако, не имеют эквивалента в СollectionViewDataSource и не отображают содержимое в виде элементов / ячеек. Они используются исключительно для описания расположения наших Items в рамках Section. Давайте приступим к практике и создадим CollectionView cо скролящимися рядами. Мы увидим наскоолько просто это можно сделать с помощью СompositionalLayout по сравнению с традиционным подходом, когда для достижения подобного эффекта приходилось внедрять CollectionView в другие CollectionView. Создадим класс ViewController, который сооответствует протоколу UICollectionViewDelegate: Добавим в него два свойства dataSource и collectionView: Создадим класс ячейки для нашей коллекции: В экстеншене зададим необходимые констрейнты: Мы подошли непосредственно к созданию лэйаута. Вынесем его в отдельный метод: Теперь мы можем создать СollectionView, передав в инициализатор лэйаут, кторый возвращает созданный нами метод. Вынемем создание и конфигурацию СollectionView в отдельный метод. И вызовем его во viewDidLoad. Нам остался последний шаг. Создать и сконфигурировать DataSource. Вызываем наш метод во viewDidLoad. Полный код приложения теперь выглядит следующим образом: Запускаем приложение и получаем CollectionView с рядами, которые можно скролить. Но что если мы решили изменить дизайн и например объединять ячейки по три, две из которых расположены справа от первой и меньше по размеру. С помощью UICollectionView Compositional Layout мы можем сделать это с написав лишь несколько строк кода.  Во-первых, так как мы хотим уменьшить размер некоторых ячеек, давайте изменим размер шрифта в ячейки на 50 чтобы наши эмоджи аккуратно отображались в ячейках. Во-вторых, в методе createLayout удалим создание item: В-третьих, создадим leadingItem. Зададим ему ширину равную 70% ширины группы. В-четвертых, создадим trailingItem. Зададим ему ширину равную 100% ширины группы и высоту равную 30%. В-пятых, создадим trailingGroup. Зададим ей ширину равную 30% ширины группы (70% у нас будет занимает leadingItem, которому мы уже задали соответствующую ширину). В поле  subitem отмечаем, что группа у нас будет состоять из двух trailingItem. В-шестых, создадим containerGroup. Зададим ей ширину 85% экрана и высоту 40%. Поместим в нее leadingItem и trailingGroup. Обновленный код метода createLayout выглядит следующим образом: Запускаем приложение и теперь у нас более сложный и интересный вид коллекции, которого мы добились за шесть простых шагов. Более подробно про CompositionalLayout и различные виды представлений, которые мы можем создавать с его помощью можно прочитать в документации Apple, а так же изучив демо приложение Apple, ссылка на которое так же находиться на странице документации. https://developer.apple.com/documentation/uikit/views_and_controls/collection_views/implementing_modern_collection_views  iOS Developer