Характеристика | UITableView | UICollectionView |
---|---|---|
Базовая структура | Линейный список (вертикальный) | Произвольная компоновка |
Гибкость layout | Только строки | Любые 2D-расположения элементов |
Ориентация | Обычно вертикальная | Любая (верт./гориз./смешанная) |
Стандартные ячейки | Встроенные стили (Basic, Subtitle) | Только кастомные реализации |
UITableViewDelegate
// UITableView настройка высоты строк
func tableView(_ tableView: UITableView,
heightForRowAt indexPath: IndexPath) -> CGFloat {
return 60
}
UICollectionViewLayout
// UICollectionView кастомный layout
class CustomLayout: UICollectionViewLayout {
override func prepare() {
// Расчет кастомной геометрии
}
}
UITableView:
UICollectionView:
// Compositional Layout пример
let group = NSCollectionLayoutGroup.horizontal(
layoutSize: groupSize,
subitems: [item1, item2]
)
UITableView:
UICollectionView:
Аспект | UITableView | UICollectionView |
---|---|---|
Простые списки | Оптимизирован лучше | Незначительные накладки |
Сложные layout | Не поддерживает | Оптимизированная отрисовка |
Память | Меньше потребление | Больше overhead |
// Создание табличного layout в UICollectionView
let layout = UICollectionViewCompositionalLayout.list(using: .init(appearance: .plain))
UITableView
— это специализированное решение для вертикальных списков с максимальной производительностью, тогда как UICollectionView
— универсальный инструмент для любых двумерных компоновок с расширенными возможностями кастомизации. Выбор между ними должен основываться на требованиях к layout'у и необходимой гибкости интерфейса.