Ambiguous vs unsatisfiable layout — в чём разница?
Суть
- Ambiguous (неоднозначный) — констрейнтов не хватает: у системы уравнений несколько решений, и движок выбирает любое. Симптомы: view «прыгает» между запусками, пропадает, прилипает к (0, 0), размер нулевой. Ошибки в консоли нет — это самое коварное.
- Unsatisfiable (невыполнимый) — констрейнты противоречат друг другу: решения нет. Движок печатает
Unable to simultaneously satisfy constraints, перечисляет участников и отбрасывает один из них (Will attempt to recover by breaking constraint …), после чего layout выглядит случайно.
Типичный источник обеих проблем — забытый translatesAutoresizingMaskIntoConstraints = false: автогенерированные констрейнты из autoresizingMask либо конфликтуют с вашими (unsatisfiable), либо, если вы задали их частично, картина выглядит как ambiguous.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep