DevPrep

Все темы › Auto Layout

Что такое констрейнт (NSLayoutConstraint)?

Junior PRO

Суть

Констрейнт — одно линейное уравнение или неравенство между атрибутами двух объектов 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

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store