SwiftUI와 UIKit 같이 사용하기

  • SwiftUI와 UIKit은 같이 사용될 수 있습니다.
  • SwiftUI는 ViewController에 embed 될 수 있는데요.
  • 반대로 UIKit View 역시 SwiftUI에서 사용되도록 개조될 수 있습니다.

SwiftUI to UIKit

  • SwiftUI 계층은 다음과 같이 쉽게 UIKit에서 사용할 수 있습니다.
  • UIHostingController로 SwiftUI를 감싸서 사용하면 됩니다.
let vc = UIHostingController(rootView: MyView())

UIKit to SwiftUI

  • UIView도 다음과 같이 SwiftUI에서 사용할 수 있습니다.
  • UIViewRepresentable를 conform하는 wrapper를 만들면 여타 SwiftUI view와 같이 작동하게 됩니다.
struct MySwiftUIView: UIViewRepresentable {
  func makeUIView(context: Context) -> UIViewType {
    // View를 원하는대로 생성하는 곳
    let view = UIView()
    return view
  }
    
  func updateUIView(_ view: UIViewType, context: Context) {
    // View를 원하는대로 수정하는 곳
  }
}
  • 다음과 같이 SwiftUI에서 사용하면 되는 것입니다.
struct MyView: View {
  var body: some View {
    MySwiftUIView()
  }
}

마무리

  • 이렇게 해서 SwiftUI와 UIKit을 같이 사용하는 방법에 대해 알아봤습니다.