Ответ
UITableView и UICollectionView – это контроллы для отображения прокручиваемых списков данных, но с разной степенью гибкости.
Ключевые различия:
-
Макет (Layout):
UITableView: Строгий вертикальный список. Поддерживает обычный (plain) и сгруппированный (grouped) стили.UICollectionView: Произвольный макет. Задается отдельным объектомUICollectionViewLayout(например,UICollectionViewFlowLayoutдля сетки или кастомный).
-
Оси и направление:
UITableView: Только вертикальная прокрутка.UICollectionView: Вертикальная, горизонтальная или кастомная (через layout).
-
Ячейки (Cells):
UITableView: Предопределенные стили ячеек (.default,.subtitle) или полностью кастомные.UICollectionView: Только кастомные ячейки. Полный контроль над вёрсткой.
-
Дополнительные view (Заголовки/Подвалы):
UITableView: Встроенная поддержка заголовков и подвалов для секций.UICollectionView: Реализуются через supplementary views (дополнительные виды), которые также настраиваются в layout.
Когда что использовать:
UITableView– для простых линейных списков (меню, контакты, лента новостей).UICollectionView– для сложных сеток (галерея фото), нелинейных макетов (Pinterest), горизонтальных каруселей.
Пример настройки коллекции:
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.itemSize = CGSize(width: 100, height: 100)
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)