В чем различия между горизонтальным и вертикальным UIStackView?

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

Ответ

Основное различие — ось (axis), вдоль которой располагаются дочерние представления (arrangedSubviews).

Атрибут Горизонтальный (axis = .horizontal) Вертикальный (axis = .vertical)
Направление Слева направо (или RTL) Сверху вниз
Распределение (distribution) Управляет шириной subviews Управляет высотой subviews
Выравнивание (alignment) Управляет позицией по вертикали Управляет позицией по горизонтали

Пример создания:

// Горизонтальный стек
let hStack = UIStackView(arrangedSubviews: [label, button])
hStack.axis = .horizontal
hStack.distribution = .fillEqually

// Вертикальный стек
let vStack = UIStackView(arrangedSubviews: [titleLabel, subtitleLabel])
vStack.axis = .vertical
vStack.spacing = 8.0

Свойства spacing и isBaselineRelativeArrangement работают одинаково для обеих ориентаций. Выбор оси определяется макетом: строки элементов — горизонтальная, колонки/списки — вертикальная.