Вопрос проверяет умение смешивать 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-приложении.