AVPlayer + 自定义播放器控件的全屏模式

10

设计:

ViewController(视图控制器): 包含一个播放器视图和一个容器视图。

播放器视图: 加载AVPlayer并在底部添加一个子视图(PlayerControlView)来加载播放器控件(播放/暂停/进度条/全屏等)。

PlayerControlView(播放器控制视图): 一个自定义的UIView,其包含了播放器控件的布局。

我可以正常加载AVPlayer和播放器控件(i.e. 非全屏模式下)。播放正常,所有控件也都能正常工作。

问题:

当用户点击播放器控件上的全屏图标时,我希望AVPlayer能够全屏。我可以通过改变播放器视图的框架(frame)和设置AVPlayerLayer的Zposition为100来实现AVPlayer全屏。

问题是,只有当我不对playerControlView进行任何更新操作(如拖动进度条或点击播放按钮等)时,AVPlayer才会一直保持在全屏状态。一旦滑块上的播放进度更新完成,AVPlayer就会退出全屏并返回到普通模式。

播放器控件没有重新定位到播放器视图的底部。它们仍然保持在之前的位置。在普通模式下,播放器控件能够根据方向的改变正确布局。

请问是否有人能够告诉我,我所采取的方法是否正确?如果不是,请建议实现AVPlayer完全功能播放器控件的正确设计。

提前感谢, Naveen


1
你已经能够在AVPlayer中实现全屏吗? - nhenrique
2个回答

2

您需要在播放器视图控制器中重写viewWillLayoutSubviews方法,并在其中更新播放器视图的框架。


0
我已经解决了这个问题,方法如下:
  1. 定义AVPlayerViewController的子类,我们称之为CustomPlayer。
  2. 在单元格/视图中使用此自定义播放器,将其视图添加到单元格/视图中。
  3. 创建全屏按钮,当按下时暂停当前播放器,并在当前控制器顶部呈现CustomPlayer。
  4. 传递AVPlayer对象以保持状态一致。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接