-
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 } }
반응형