当将 AVPlayerViewController 嵌入仅竖屏 iOS 应用程序时,如果在设备处于横向时全屏播放视频,则当播放器退出全屏时,应用程序似乎会卡在奇怪的布局中。
这是错误还是我做错了什么?
此处介绍了如何使用 Xcode 9.4.1、swift 4、iOS 11.4、模拟器或物理设备重现干净的项目。
ViewController.swift
override func viewDidLoad() {
super.viewDidLoad()
//Create the player and add as child view controller
let playerVC = AVPlayerViewController()
self.addChildViewController(playerVC)
//Place player's view in self
playerVC.view.frame = CGRect(x: 10, y: 40, width: 355, height: 200)
self.view.addSubview(playerVC.view)
//Load example video
playerVC.player = AVPlayer(url: URL(string: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4")!)
}
它的正常工作方式:
- 播放视频,全屏
- 旋转为横向,视频旋转
- 关闭全屏,无论屏幕或设备方向如何,应用都会返回纵向
- 例如:https://imgur.com/a/MPFmzyH
它是如何 splinter 的:
- 播放视频,将设备旋转到横向(屏幕不旋转)
- 点击全屏
- 退出全屏
- 屏幕中断,旋转不修复
- 例如:https://imgur.com/a/hDdmu20
最佳答案
当您离开播放器全屏时,您将进入 View Controller 的 viewWillAppear。所以在 viewWillAppear 中尝试将窗口框架设置为等于屏幕边界。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
appDelegate.window?.rootViewController?.view.frame = UIScreen.main.bounds
}
关于ios - 仅纵向应用程序中的 AVPlayerViewController 全屏旋转行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50977823/