SwiftUI와 UIKit 혼용하기

  • 당연하게도 SwiftUI와 UIKit은 같이 사용될 수 있다.
  • SwiftUI는 ViewController에 embed 될 수 있고
  • UIKit View 역시 SwiftUI에서 사용되도록 개조될 수 있다.

SwiftUI to UIKit

let vc = UIHostingController(rootView: MyView())
  • SwiftUI 계층은 위와 같이 쉽게 UIKit에서 사용할 수 있다.
  • UIHostingController을 사용하면 된다.

UIKit to SwiftUI

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

관련 글