Выбор ответа Junior UIKit спрашивают часто обновлено

translatesAutoresizingMaskIntoConstraints

Вопрос

Вы добавили view в код и задали ей констрейнты, но в консоли конфликт с NSAutoresizingMaskLayoutConstraint. Что забыли?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: translatesAutoresizingMaskIntoConstraints = false. По умолчанию у view, созданной в коде, autoresizing mask превращается в констрейнты, фиксирующие её фрейм.

Варианты ответа

  1. Вызвать layoutIfNeeded() перед добавлением view
  2. translatesAutoresizingMaskIntoConstraints = falseправильный ответ
  3. Задать view.frame = .zero перед активацией констрейнтов
  4. Пометить констрейнты priority = .required

Разбор

По умолчанию у view, созданной в коде, autoresizing mask превращается в констрейнты, фиксирующие её фрейм. Вместе с вашими они конфликтуют. Флаг нужно выключить для каждой view, которую раскладываете констрейнтами (Interface Builder делает это сам). Обнуление фрейма и приоритеты конфликт не убирают.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.