Как работает раскладка в SwiftUI: предложение размера, выбор размера, размещение?
Суть
Раскладка в SwiftUI — диалог из трёх шагов. Родитель предлагает ребёнку размер (ProposedViewSize: каждая ось — число, nil «какой тебе удобно», 0 «минимальный» или .infinity «максимальный»). Ребёнок выбирает свой размер с учётом предложения, но не обязан ему подчиняться. Родитель размещает ребёнка в своих координатах — изменить выбранный ребёнком размер он уже не может.
В отличие от Auto Layout здесь нет системы ограничений: каждая view — функция «предложение → размер», раскладка идёт сверху вниз, а контейнеры при необходимости опрашивают детей несколько раз с разными предложениями.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep