Что такое UICollectionView в UIKit?

«Что такое UICollectionView в UIKit?» — вопрос из категории UIKit, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

UICollectionView — это высоконастраиваемый компонент UIKit для отображения упорядоченной коллекции элементов. В отличие от UITableView, он не привязан к вертикальному списку и может организовывать данные в сетки, карусели, мозаичные раскладки и другие сложные макеты.

Основные компоненты:

  1. UICollectionViewLayout — Абстрактный класс, определяющий расположение и атрибуты всех ячеек и supplementary views (заголовки, футеры). UICollectionViewFlowLayout — стандартный подкласс для сетки.
  2. UICollectionViewCell — Ячейка, отображающая контент. Настраивается через subviews или кастомное рисование.
  3. UICollectionViewDataSource — Протокол для предоставления данных (количество секций, ячеек, самих ячеек).
  4. UICollectionViewDelegate — Протокол для обработки взаимодействий (выбор, подсветка, отображение).

Базовый пример создания сетки:

// 1. Создание layout
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical
layout.itemSize = CGSize(width: 100, height: 100)
layout.minimumLineSpacing = 10

// 2. Создание коллекции
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
collectionView.translatesAutoresizingMaskIntoConstraints = false

// 3. Регистрация ячейки (для переиспользования)
collectionView.register(MyCustomCell.self, forCellWithReuseIdentifier: "CellID")

// 4. Назначение источника данных
collectionView.dataSource = self
view.addSubview(collectionView)

Преимущество: Отделение данных (DataSource) от их визуального представления (Layout) делает UICollectionView чрезвычайно гибким.