【问题标题】:AVPlayerViewController inside a view is not showing the playback controls视图内的 AVPlayerViewController 未显示播放控件
【发布时间】:2017-08-17 02:40:28
【问题描述】:

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

问题是视频在其帧中播放正常,但暂停、播放、前进等控件被隐藏且无法正常工作。但是当我将 frame 设置为 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


    【解决方案1】:

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

    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

    【讨论】:

    • 我在表格视图单元格中的集合视图中使用了这个控件正在显示但对我不起作用
    • @SaeedRahmatolahi 你能解决这个问题吗?
    • @RajeshBudhiraja 在我的案例中我使用滚动视图而不是集合视图,我可以看到按钮
    【解决方案2】:

    这是预期的行为:

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

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

    【讨论】:

    • 嘿,感谢大卫的许可。当空间小于全屏时,我可以通过什么方式显示 avplayer 的控件?
    • @Ruchi 是的,您可以在 AVPlayer 实例上添加自定义视图,从 AVPlayer 属性中获取信息,但无法使用本机 AVPlayerViewController。
    • 好的。你知道任何第三方库或框架吗?我搜索了但找不到一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 2018-05-07
    • 1970-01-01
    相关资源
    最近更新 更多