Ответ
Основное различие — ось (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 работают одинаково для обеих ориентаций. Выбор оси определяется макетом: строки элементов — горизонтальная, колонки/списки — вертикальная.
Ответ 18+ 🔞
А, слушай, вот этот твой UIStackView, он же как два стула с одной жопой, только в коде. Всё упирается в одну хуйню — ось, axis то есть. Куда он твои вьюхи пихать будет — в рядок или в столбик.
Смотри, табличка, чтоб не ебал мозг:
| Штука | Горизонтально (axis = .horizontal) |
Вертикально (axis = .vertical) |
|---|---|---|
| Куда смотрит | Слева направо (или наоборот, если араб) | Сверху вниз, как с горки |
Распределение (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 — они, блядь, универсальные солдаты, для любой ориентации годятся. Выбирай ось по смыслу: если строчка кнопок — горизонталь, если список, колонка — вертикаль. Всё просто, ёпта. Не усложняй.