【发布时间】:2018-04-22 00:01:37
【问题描述】:
我的 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:我不希望我的屏幕元素对方向变化做出反应,但仍希望我的子视图控制器接收方向变化事件。
【问题讨论】:
-
你只需要
AVPlayerViewController支持风景 -
@a.masri 是的,我正在尝试让播放器视图控制器支持横向,并将其父视图控制器保留为纵向。但是我看到当玩家进入横向全屏并返回父视图控制器时,父视图控制器也以横向呈现。
标签: ios swift uiinterfaceorientation