Ответ
Для однозначного позиционирования 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).