Integrando SwiftUI com UIKit
Aposto que todo mundo ficou empolgado quando Apple anunciou o SwiftUI, um novo framework que nos permite escrever códigos de UI de forma declarativa e de cara já te entrega suporte automático para Dynamic Type, Dark Mode e Localization.
Porém nem tudo vem de graça e o preço para usar o SwiftUI é o suporte a partir do iOS 13 e hoje a não ser que você esteja criando um projeto novo é muito provável que você vá trabalhar em um projeto com código legado em UIKit e não vai ser possível fazer tudo com SwiftUI logo de cara.
Então de que forma podemos integrar os dois frameworks?
A forma que a Apple criou para poder lidar com componentes de SwiftUI dentro do UIKit é utilizar a UIHostingController para armazenar componentes de SwiftUI.
Desta forma, views de SwiftUI podem ser integradas dentro da hierarquia de views do UIKit.
Como usar?
Existem duas formas de usar uma UIHostingController, a primeira é utilizando o interface builder e a segunda via código.
Interface Builder
Caso você trabalhe com Storyboards ou Xibs, no Xcode 11 o UIHostingController foi introduzido dentro da biblioteca de componente dentro do interface builder.
Basta adicionar o componente no storyboard ou xib e criar uma sub classe herdando de UIHostingController passando qual a view de SwiftUI que será usada.
E como resultado vamos ter a tela abaixo:
Via código:
Para criar uma UIHostingController pelo código é bem simples também, basta passar no construtor qual a view de SwiftUI que você deseja usar.
let testViewController = UIHostingController(rootView: TestView())
Indo além
Com o UIHostingController podemos trabalhar com qualquer tipo de View, como por exemplo uma célula de table/collection view.
Conclusão
Mesmo trabalhando em projetos que tenham sido feitos com UIKit podemos também trabalhar com SwiftUI, um não necessariamente exclui o outro e desta forma podemos aos poucos migrar nosso projeto.
Espero que tenham gostado! Dúvidas, críticas e sugestões por favor deixem nos comentários.