视图内的 AVPlayerViewController 未显示播放控件

问题描述 投票:0回答:3

我正在使用苹果电视。我的 UIViewController 中有一个 UIView。我将 AVPlayerViewController 添加为 UIView 的子视图。 UIView的框架是CGRect(x: 50, y: 50, width: 1344, height: 756)。我将 AVPlayerViewController 框架设置为等于我的 UIView 框架。

问题是视频在其帧中播放良好,但暂停、播放、前进等控件被隐藏并且不起作用。但是当我将框架设置为 CGRect(x: 0, y: 0, width: 1920, height: 1080) 时,控件可见并且可以工作。

我的代码如下:

    let url = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
    let item = AVPlayerItem(url: url!)        
    self.player = AVPlayer(playerItem: item)
    self.avplayerController = AVPlayerViewController()
    self.avplayerController.player = self.player
    self.avplayerController.view.frame = videoPreviewLayer.frame
    self.avplayerController.showsPlaybackControls = true
    self.avplayerController.requiresLinearPlayback = true

    self.addChildViewController(self.avplayerController)
    self.view.addSubview(self.avplayerController.view)

    self.avpController.player?.play()

请帮忙。

ios swift avplayer tvos avplayerviewcontroller
3个回答
9
投票

我设法使用此代码解决了这个问题:

let player = AVPlayer(url: self.videoUrl!)
let avPlayerController = AVPlayerViewController()

avPlayerController.player = player;
avPlayerController.view.frame = self.videoPlayView.bounds;

self.addChildViewController(avPlayerController)
self.videoPlayView.addSubview(avPlayerController.view);

现在 AVPlayerViewController 显示大多数播放控件,甚至作为 uiview 的子视图。

礼貌: https://www.techotopia.com/index.php/IOS_8_Video_Playback_using_AVPlayer_and_AVPlayerViewController


6
投票

这是预期的行为:

AVPlayerViewController 的设计使得全屏时, 完整的播放体验(滑动、信息面板访问等)都是 可用的。当空间小于全屏时,假设是 它只是屏幕上的几个交互元素之一,并且 因此,视图不应吸收所有触摸表面事件作为传输 控制。

您可以在此线程上阅读更多相关信息:https://forums.developer.apple.com/thread/19526


-1
投票

我也遇到过类似的缺少控件的问题。相同的播放器组件(使用controller.view作为子视图的自定义视图等)在一个地方工作,但在同一应用程序的另一个地方工作。它们都不是全屏的,没有一个将控制器添加为子级,只有视图。尽管如此,一个显示了控件,另一个则没有。

最终对我的情况有帮助的是在添加其(子)视图后在播放器控制器上调用

beginAppearanceTransition(...)
。 iOS 16 中有一个与之相关的变化。

https://developer.apple.com/documentation/uikit/uiviewcontroller/1621387-beginappearancetransition

© www.soinside.com 2019 - 2024. All rights reserved.