UIKit의 ViewController에서 SwiftUI의 View 호출

장면 작업


기본 프로젝트는 UIKit에서 수행되며, 일부만 SwiftUI를 사용하려는 경우

그림 완성


SwiftUI로 제작된 부품을 UIKit 측면에서 호출하여 표시
버튼을 클릭하면 버튼 텍스트를 변경할 수 있습니다

프로젝트 작성


유키로 만들기.


SwiftUI로 부품 만들기


import SwiftUI

struct ButtonView: View {
    @State var buttonText = "SwiftUIのView"
    var body: some View {
        Button(action: {
            buttonText = "Tapped"
        })
        {
            Text(buttonText)
                .font(.largeTitle)
                .padding()
                .cornerRadius(4)
                .overlay(
                    RoundedRectangle(cornerRadius: 16)
                        .stroke(Color.blue, lineWidth: 4)
                )
        }
    }
}

struct ButtonView_Previews: PreviewProvider {
    static var previews: some View {
        ButtonView()
    }
}

UIKit의 ViewController에서 호출


UIHostingController는 UIViewController를 계승하기 때문에 이것을 사용합니다

import UIKit
import SwiftUI

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let vc: UIHostingController = UIHostingController(rootView: ButtonView())
        view.addSubview(vc.view)
        
        // frameを決めないと表示されない
        vc.view.translatesAutoresizingMaskIntoConstraints = false
        vc.view.heightAnchor.constraint(equalToConstant: 200).isActive = true
        vc.view.leftAnchor.constraint(equalTo: self.view.leftAnchor, constant: 16).isActive = true
        vc.view.rightAnchor.constraint(equalTo: self.view.rightAnchor, constant: -16).isActive = true
        vc.view.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true
    }
}
UIHostingController 정보

좋은 웹페이지 즐겨찾기