【SwiftUI】UIViewControllerでSwiftUIのViewを表示する
過去にUIKitで作って公開したアプリを、そっくりそのままSwiftUIに移行したかったがやり方がよくわからなかったので、表題の通りUIViewController上でSwiftUIのViewを表示しました。
UIViewController上で、SwiftUIで作ったContentViewを表示しています。.environmentObjectもここで初期化します。
override func viewDidLoad() {
super.viewDidLoad()
let vc: UIHostingController = UIHostingController(rootView: ContentView().environmentObject(Test()))
self.addChild(vc)
self.view.addSubview(vc.view)
vc.didMove(toParent: self)
vc.view.translatesAutoresizingMaskIntoConstraints = false
vc.view.heightAnchor.constraint(equalToConstant: view.frame.height).isActive = true
vc.view.leftAnchor.constraint(equalTo: self.view.leftAnchor, constant: 0).isActive = true
vc.view.rightAnchor.constraint(equalTo: self.view.rightAnchor, constant: 0).isActive = true
vc.view.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true
}
実行すると、あたかもSwiftUIって感じになります。