Какое минимальное количество constraints необходимо для однозначного позиционирования UIView?

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

Ответ

Для однозначного позиционирования UIView в Auto Layout требуется 4 независимых constraint (2 по горизонтали и 2 по вертикали). Это связано с необходимостью определить положение (x, y) и размер (width, height).

Базовый пример (фиксация отступов от супервью):

view.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
    view.leadingAnchor.constraint(equalTo: superview.leadingAnchor, constant: 20),
    view.trailingAnchor.constraint(equalTo: superview.trailingAnchor, constant: -20),
    view.topAnchor.constraint(equalTo: superview.topAnchor, constant: 20),
    view.bottomAnchor.constraint(equalTo: superview.bottomAnchor, constant: -20)
])

Исключения и уточнения:

  • Если явно заданы width и height, то для позиционирования достаточно 2 constraints (например, centerX и centerY).
  • Система может неявно определять размер на основе intrinsic content size (например, у UILabel).
  • Важно: Constraints должны быть непротиворечивыми и достаточными. Недостаточные constraints приводят к ambiguous layout, а противоречивые — к конфликтам (break).