SwiftUI 를 이용한 AVPlayer Progress Binding 처리 - kirseia/study GitHub Wiki

간단한 앱을 만드는데 SwiftUI를 이용하고 있는데 기존에는 쉽게 해결했을 것 같은데 쉽게 해결이 안되는 것들이 있었다.

요구사항

  1. AVPlayer를 이용해 영상을 재생
  2. 재생 / 멈춤 토글 버튼이 존재
  3. AVPlayer 재생 시간에 따라 ProgressBar가 업데이트 됨
  4. ProgressBar를 drag 하면 AVPlayer가 seek 됨

1) AVPlayer 이용한 재생

  • 기본적으로 SwiftUI에서는 AVPlayerLayer을 사용할 수 없어서 기존 UIKit을 활용해서 AVPlayerLayer + AVPlayer를 활용한 Custom View를 만들었음.

그리고 UIViewRepresentable을 활용해서 SwiftUI View를 만들어서 연결했음

  • 문제1 - updateUIView:가 엄청나게 호출됨.
    • TODO: 이유는 아직 잘 모름