Ответ
Метод loadView() контроллера представления (UIViewController) отвечает за создание и присвоение его корневого view. Это точка для полностью кастомной программной инициализации view-иерархии, в обход Storyboard или XIB-файлов.
Основные сценарии использования:
- Программный UI – Когда интерфейс строится исключительно кодом, без Interface Builder.
- Специализированные view – Для использования кастомных подклассов
UIView, которые сложно или невозможно создать в Storyboard. - Оптимизация – Ленивая или условная загрузка сложных view-иерархий.
Пример реализации:
override func loadView() {
// 1. Не вызываем super.loadView(), так как создаем view с нуля.
// 2. Создаем и настраиваем корневое view.
let rootView = UIView()
rootView.backgroundColor = .systemBackground
let titleLabel = UILabel()
titleLabel.text = "Программно созданный View"
titleLabel.translatesAutoresizingMaskIntoConstraints = false
rootView.addSubview(titleLabel)
// 3. Настраиваем layout.
NSLayoutConstraint.activate([
titleLabel.centerXAnchor.constraint(equalTo: rootView.centerXAnchor),
titleLabel.centerYAnchor.constraint(equalTo: rootView.centerYAnchor)
])
// 4. КРИТИЧЕСКИ ВАЖНО: присвоить self.view.
self.view = rootView
}
Важно: Если вы переопределяете loadView(), вы берете на себя полную ответственность за создание view. Для обычной пост-инициализации (настройка уже загруженного view) используйте viewDidLoad().