我的Swift应用程序的视图控制器始终固定为纵向模式,但视图控制器有一个嵌入式AV视频播放器(添加为子视图控制器),应该切换到全屏模式,设备方向更改为景观。
我面临的问题是,如果我未在View Controller上启用横向模式,我将无法检测到方向更改(尝试使用NSNotification.Name.UIApplicationDidChangeStatusBarOrientation
,NSNotification.Name.UIDeviceOrientationDidChange
)&因此无法触发播放器全屏。
我希望我的视图控制器 不 对方向更改做出反应,因为它会导致我的自动布局视图拉伸并适应屏幕尺寸变化,但同时我希望方向更改能够到达子视图控制器,即视频播放器,以便它可以处理全屏模式/内联模式之间的切换。
if let playerVC = createPlayerViewController() as? (UIViewController & MyEmbedPlayer) {
// Set up events delegate.
self.playerViewController = playerVC
self.playerViewController?.setEventsDelegate(self)
// PlayerViewController added as child of View Controller
self.addChildViewController(self.playerViewController!)
}
let managedPlayerView = self.playerViewController?.view
managedPlayerView?.removeFromSuperview()
managedPlayerView?.frame = self.playerView.bounds
managedPlayerView?.autoresizingMask = [.flexibleWidth, .flexibleHeight]
playerView.addSubview(managedPlayerView!)
self.playerViewController?.didMove(toParentViewController: self)
self.playerViewController?.setVideoURL(streamURL)
TL; DR:我不希望我的屏幕元素对方向更改做出反应,但仍希望我的子视图控制器接收方向更改事件。
答案 0 :(得分:0)
试试这段代码
let myAVPlayerViewController = MYAVPlayerViewController()
myAVPlayerViewController.player = player
self.present(myAVPlayerViewController, animated: true) {
self.player.play()
}
在你的控制器中调用
{{1}}
注意:请确保检查只是肖像一般 - >设备 取向