import AVKit class RCTVideoPlayerViewController: AVPlayerViewController { weak var rctDelegate: RCTVideoPlayerViewControllerDelegate? // Optional paramters var preferredOrientation: String? var autorotate: Bool? func shouldAutorotate() -> Bool { if autorotate! || preferredOrientation == nil || (preferredOrientation!.lowercased() == "all") { return true } return false } override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) rctDelegate?.videoPlayerViewControllerWillDismiss(playerViewController: self) rctDelegate?.videoPlayerViewControllerDidDismiss(playerViewController: self) } #if !os(tvOS) func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { return .all } func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation { if preferredOrientation?.lowercased() == "landscape" { return .landscapeRight } else if preferredOrientation?.lowercased() == "portrait" { return .portrait } else { // default case if #available(iOS 13, tvOS 13, *) { return RCTVideoUtils.getCurrentWindow()?.windowScene?.interfaceOrientation ?? .unknown } else { #if !os(visionOS) return UIApplication.shared.statusBarOrientation #endif } } } #endif }