🧑💻/Swift
AVPlayerViewController 시계, 배터리 상태표시줄 표시 방법
유리맥
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
}
}
반응형