Выбор ответа Junior UIKit спрашивают часто обновлено
translatesAutoresizingMaskIntoConstraints
Вопрос
Вы добавили view в код и задали ей констрейнты, но в консоли конфликт с NSAutoresizingMaskLayoutConstraint. Что забыли?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: translatesAutoresizingMaskIntoConstraints = false. По умолчанию у view, созданной в коде, autoresizing mask превращается в констрейнты, фиксирующие её фрейм.
Варианты ответа
- Вызвать
layoutIfNeeded()перед добавлением view translatesAutoresizingMaskIntoConstraints = falseправильный ответ- Задать
view.frame = .zeroперед активацией констрейнтов - Пометить констрейнты
priority = .required
Разбор
По умолчанию у view, созданной в коде, autoresizing mask превращается в констрейнты, фиксирующие её фрейм. Вместе с вашими они конфликтуют. Флаг нужно выключить для каждой view, которую раскладываете констрейнтами (Interface Builder делает это сам). Обнуление фрейма и приоритеты конфликт не убирают.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «UIKit»
- Неверная картинка в переиспользуемой ячейке
- Diffable data source и повторяющиеся идентификаторы
- Что делать в prepareForReuse
- reconfigureItems и reloadItems
- Ячейки с автоматической высотой
- Разница между frame и bounds
- Где брать финальный размер view
- Почему кнопка не получает нажатия