Вопрос проверяет знание гибкости и ограничений двух основных компонентов для отображения списков и сеток в UIKit.
UITableView предназначена для вертикального списка однотипных ячеек, поддерживает секции и простые заголовки. UICollectionView — более гибкая, позволяет располагать ячейки в любых сетках или персонализованных компоновках через UICollectionViewLayout, поддерживает горизонтальный скролл, многострочные ряды, кастомные layout.
UITableView:
Вертикальный список; одну колоночную компоновку.
Удобные методы insertRows, deleteRows.
Дефолтные секции с заголовками/футерами.
UICollectionView:
Компоновка определяется классом UICollectionViewLayout (Flow, Custom).
Поддерживает сетки, горизонтальный скролл, комплексные визуальные эффекты.
Ячейки могут менять размер и расположение динамически.
Пример UICollectionViewFlowLayout:
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.itemSize = CGSize(width: 100, height: 100)
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)Вывод:
Для простых вертикальных списков удобнее UITableView; для более сложных и кастомных сеток — UICollectionView.