Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Swift : uihostingcontroller, swiftui, uikit, integration

Как добавить SwiftUI-вью в UIKit-контроллер через UIHostingController?

Вопрос проверяет умение смешивать SwiftUI и UIKit, чтобы постепенно мигрировать или использовать декларативные вью в существующем проекте.

Короткий ответ

Создаёте UIHostingController(rootView:) с вашим SwiftUI-вью, добавляете его как дочерний контроллер в UIKit-контроллер, устанавливаете фрейм или constraints, и вызываете addChild/didMove(toParent:). После этого SwiftUI-вью отображается внутри UIKit.

Длинный ответ

Создание и добавление:

let swiftUIView = MySwiftUIView()
let host = UIHostingController(rootView: swiftUIView)
addChild(host)
view.addSubview(host.view)
host.didMove(toParent: self)

Установка констрейнтов:

host.view.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
    	host.view.topAnchor.constraint(equalTo: view.topAnchor),
    	host.view.bottomAnchor.constraint(equalTo: view.bottomAnchor),
    	host.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
    	host.view.trailingAnchor.constraint(equalTo: view.trailingAnchor)
])

Удаление при необходимости:

host.willMove(toParent: nil)
host.view.removeFromSuperview()
host.removeFromParent()

Когда применять:

  • При миграции экранов на SwiftUI.

  • Для частичного использования SwiftUI-компонентов в UIKit-приложении.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Swift

    Swift

Ключевые слова

#uihostingcontroller

#swiftui

#uikit

#integration

Подпишись на iOS Developer в телеграм