Что такое констрейнт (NSLayoutConstraint)?
Суть
Констрейнт — одно линейное уравнение или неравенство между атрибутами двух объектов layout:
item1.attribute1 (=, ≥, ≤) multiplier × item2.attribute2 + constant
Например: button.leading = superview.leading × 1 + 16 или label.width ≤ 240. Атрибуты — leading, trailing, top, bottom, width, height, centerX, centerY, firstBaseline, lastBaseline и margin-варианты. Второй элемент может отсутствовать (height = 44) или быть UILayoutGuide (safe area, margins, custom guide).
Auto Layout собирает все активные констрейнты в систему и решает её (алгоритм Cassowary), получая frame каждой view. Неравенства — ключевая часть модели: «не шире родителя», «не меньше 44 pt» выражаются именно ими.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep