iOS/SwiftUI

[SwiftUI] UIRepresentable

HarryJeonn 2022. 5. 2. 19:02

SwiftUI에서 UIView를 사용하기 위해 사용!

 

 

카메라를 사용해보자

struct CameraView: UIViewRepresentable {

}

UIViewRepresentable를 상속받는다

struct CameraView: UIViewRepresentable {
		class VideoPreviewView: UIView {
        override class var layerClass: AnyClass {
            AVCaptureVideoPreviewLayer.self
        }
        
        var videoPreviewLayer: AVCaptureVideoPreviewLayer {
            return layer as! AVCaptureVideoPreviewLayer
        }
    }

		let session = AVCaptureSession()

    func makeUIView(context: Context) -> VideoPreviewView {
        let view = VideoPreviewView()
        
        view.backgroundColor = .black
        view.videoPreviewLayer.videoGravity = .resizeAspectFill
        view.videoPreviewLayer.cornerRadius = 0
        view.videoPreviewLayer.session = session
        view.videoPreviewLayer.connection?.videoOrientation = .portrait

        return view
    }
    
		func updateUIView(_ uiView: VideoPreviewView, context: Context) {
		
    }
}

makeUIView(context:) -> UIViewupdateUIView(:context:)사용

makeUIView(context:) -> UIView

UIView를 생성하는 메소드

SwiftUI의 View 라이프 사이클동안 한번 호출

updateUIView(:context:)

View의 State가 바뀔때마다 트리거

SwiftUI View의 상태도 가져올 수 있음

 

 

 

제가 틀렸거나 다른 의견이 있으시다면 댓글로 남겨주시면 감사하겠습니다 :)