ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AVPlayerViewController 시계, 배터리 상태표시줄 표시 방법
    🧑‍💻/Swift 2024. 8. 16. 17:14
    반응형

     

    AVKit의 AVPlayerViewController를 SwiftUI에서 사용하던 중

    상단 Safe Area 영역에 시간, 배터리 등이 표시되지 않는 문제가 발생했습니다. 이거 사실 버그 아닌가요

    상태표시줄

     

    struct MyVideoPlayer: UIViewControllerRepresentable {
        let player: AVPlayer
        
        func makeUIViewController(context: Context)-> AVPlayerViewController {
            let controller = AVPlayerViewController()
            controller.player = player
            return controller
        }
        
        func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) { }
    }

     

     

    상태표시줄을 표시하는 방법은 두 가지 시도해볼 수 있는데요.

     

    1. UIViewRepresentable로 교체

    UIViewControllerRepresentable로 구현된 MyVideoPlayer를 UIViewRepresentable로 교체합니다.

    struct MyVideoPlayerView: UIViewRepresentable {
        let player: AVPlayer
        
        func makeUIView(context: Context) -> UIView {
            let controller = AVPlayerViewController()
            controller.player = player
            return controller.view
        }
    
        func updateUIView(_ uiView: UIView, context: Context) { }
    }

     

     

    2. prefersStatusBarHidden 값 변경

    AVPlayerViewController의 prefersStatusBarHidden 값을 false로 오버라이드해서 숨기지 않도록 합니다.

    간단한 방법이지만 AVPlayerViewController를 여러 개 띄우고, 상태표시줄을 표시하지 않는 화면이 있다면

    return 값을 수정하거나 방법1로 고쳐야겠네요.

    extension AVPlayerViewController {
        /// 상단 상태표시줄 숨김
        open override var prefersStatusBarHidden: Bool {
            return false
        }
    }

     

    반응형

    댓글

Designed by Tistory.