iOS - SwiftUI에서 UIKit 사용하기

이한솔·2024년 6월 25일
0

iOS 앱개발 🍏

목록 보기
45/54

SwiftUI에서 UIKit 사용하기

SwiftUI 프로젝트에 UIKit 뷰를 추가하려면 UIViewControllerRepresentable 프로토콜을 사용하면 된다.



  1. UIViewRepresentable을 준수하는 struct 정의

makeUIView(context:)
SwiftUI가 UIView 인스턴스를 생성할 때 호출, UILabel을 생성하는 등 초기 설정을 한다.
updateUIView(_:context:)
SwiftUI가 UIView의 상태를 업데이트할 때 호출, UILabel의 텍스트를 업데이트한다.

import SwiftUI
import UIKit

struct LabelView: UIViewRepresentable {
    var text: String

    func makeUIView(context: Context) -> UILabel {
        let label = UILabel()
        label.text = text
        label.textAlignment = .center
        label.font = UIFont.systemFont(ofSize: 24)
        return label
    }

    func updateUIView(_ uiView: UILabel, context: Context) {
        uiView.text = text
    }
}
  1. SwiftUI에서 UIKit 뷰 사용
import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Text("This is a SwiftUI Text")
                .font(.headline)
                .padding()

            LabelView(text: "This is a UIKit UILabel")
                .frame(height: 50)
                .padding()

            Spacer()
        }
    }
}

UIViewController extension 후 사용

  1. UIViewController extension 하기
extension MainVC {
    
    private struct VCRepresentable : UIViewControllerRepresentable {
        
        let mainVC : MainVC
        
        func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) {
        }
        
        func makeUIViewController(context: Context) -> some UIViewController {
            return mainVC
        }
    }
    
    func getRepresentable() -> some View {
        VCRepresentable(mainVC: self)
    }
}
  1. swiftUI에서 사용하기
struct ContentView: View {
    var body: some View {
        MainVC().getRepresentable()
    }
}

0개의 댓글