Orientation fixes

This commit is contained in:
Arkadiusz Fal 2023-05-21 11:54:17 +02:00
parent 08ce572b9e
commit 2b7ccc4b03
2 changed files with 14 additions and 9 deletions

View File

@ -486,6 +486,7 @@ final class PlayerModel: ObservableObject {
#endif #endif
controls.hide() controls.hide()
controls.hideOverlays()
#if !os(macOS) #if !os(macOS)
UIApplication.shared.isIdleTimerDisabled = presentingPlayer UIApplication.shared.isIdleTimerDisabled = presentingPlayer
@ -502,6 +503,18 @@ final class PlayerModel: ObservableObject {
self?.pause() self?.pause()
} }
} }
if !presentingPlayer {
#if os(iOS)
if Defaults[.lockPortraitWhenBrowsing] {
Orientation.lockOrientation(.portrait, andRotateTo: .portrait)
} else {
Orientation.lockOrientation(.allButUpsideDown)
}
OrientationModel.shared.stopOrientationUpdates()
#endif
}
} }
func changeActiveBackend(from: PlayerBackendType, to: PlayerBackendType, changingStream: Bool = true) { func changeActiveBackend(from: PlayerBackendType, to: PlayerBackendType, changingStream: Bool = true) {
@ -1024,6 +1037,7 @@ final class PlayerModel: ObservableObject {
} else { } else {
if activeBackend == .appleAVPlayer, avPlayerUsesSystemControls { if activeBackend == .appleAVPlayer, avPlayerUsesSystemControls {
avPlayerBackend.controller.exitFullScreen(animated: true) avPlayerBackend.controller.exitFullScreen(animated: true)
avPlayerBackend.controller.dismiss(animated: true)
} }
let rotationOrientation = rotateToPortraitOnExitFullScreen ? UIInterfaceOrientation.portrait : nil let rotationOrientation = rotateToPortraitOnExitFullScreen ? UIInterfaceOrientation.portrait : nil
Orientation.lockOrientation(.allButUpsideDown, andRotateTo: rotationOrientation) Orientation.lockOrientation(.allButUpsideDown, andRotateTo: rotationOrientation)

View File

@ -140,15 +140,6 @@ struct VideoPlayerView: View {
} }
} }
} }
.onDisappear {
if Defaults[.lockPortraitWhenBrowsing] {
Orientation.lockOrientation(.portrait, andRotateTo: .portrait)
} else {
Orientation.lockOrientation(.allButUpsideDown)
}
orientationModel.stopOrientationUpdates()
player.controls.hideOverlays()
}
.onReceive(NotificationCenter.default.publisher(for: UIDevice.orientationDidChangeNotification)) { _ in .onReceive(NotificationCenter.default.publisher(for: UIDevice.orientationDidChangeNotification)) { _ in
guard player.lockedOrientation.isNil else { guard player.lockedOrientation.isNil else {
return return