愚蠢的问题:如何使AVPlayer看起来像其他所有人一样?

时间:2019-09-12 19:09:58

标签: ios objective-c avplayer

我当前的设置(可能会发生变化)

我现在有一个简单的iOS应用程序,可以使用AVPlayer播放M3U8。为了将自定义UI元素放置在播放器的顶部(主要是文本警报),我对可能是糟糕的体系结构进行了吉米操纵,并且我愿意废弃整个结构并重新开始。

  • 首先,我创建了一个新的UIView,称为“ MyPlayer”。该UIView包含一个XIB文件,其中没有任何内容
  • 接下来,我创建了一个新的NSObject(现在称为UIView),我将其称为“ PlayerDisplay”。该类还具有与其关联的XIB文件,其中包含ImageView和Label
  • MyPlayer.m的init方法中,我使用PlayerDisplay方法实例化了initWithMyPlayer
  • PlayerDisplay.m的initWithMyPlayer方法中,我创建了一个AVPlayerViewController实例
  • 我叫[myPlayer addSubview:controller.view]controller.view.frame = myPlayer.bounds来让播放器显示在我的视野内
  • 我打电话给[[NSBundle bundleForClass:[self class]] loadNibNamed:@"PlayerDisplay" owner:self options:nil],以便用ImageView和Label加载XIB
  • 我叫[myPlayer addSubview:self.contentView]self.contentView.frame = myPlayer.bounds让播放器在播放器顶部显示我的ImageView和Label

当时感觉很乱,现在感觉很乱。但是它允许我将单个MyPlayer视图插入应用程序,并使其加载我所有的自定义控件和显示逻辑。而且它可以正常工作(至少可以追溯到我测试过的最古老的iOS 8,以及直到我测试过的最新的iOS 12.4)

但是,我最近想研究创建自定义控件,并向一些行业领导者(Netflix,YouTube等)寻求灵感-我注意到, 市场上的所有其他视频播放器看起来都一样< / em> ,但它们看起来都不像我的。

Netflix

A sample of Netflix's iOS player

ESPN

A sample of ESPN's iOS player

Hulu

A sample of Hulu's iOS player

Amazon Prime

A sample of Amazon Prime's iOS player

YouTube

A sample of YouTube's iOS player

抽搐

enter image description here

这些玩家中的每一个都有:

  • 带有透明背景的白色图标直接放置在视频顶部(无控制栏背景)
  • 视频死点处的播放/暂停按钮
  • 在播放按钮的两侧搜索后退/前进按钮
  • 视频底部的搜索栏
  • 左上角的单个图标
  • 右上角的图标水平列表

不仅如此,Netflix和ESPN使用完全相同的图标集搜索图标(尽管经过进一步检查,播放按钮和投射按钮略有不同)

类似地,Hulu和Amazon Prime使用完全相同的图标集。有人指出,Hulu和Amazon Prime足以区别为不同的图标集。不过,我仍然支持Netflix和ESPN具有相同的搜索按钮。我已经重新整理了图片以使其更明显

让我感到难以置信的是,每个公司都禁用了默认控件,从头开始构建了自己的用户界面,并且它们都 恰好发生 ,看起来都一样。我感觉要么AVPlayer可以启用此布局,要么Apple提供了一个从图标集构建UI的框架,该框架以这种方式进行布局,或者可能有一个第三方库被认为是“事实”标准,视频流,就像ExoPlayer是Android上的领先名称

将以上所有播放器与我的 播放器进行比较和对比,该播放器将Apple的默认UI用于AVPlayerViewController

MyPlayer

  • 控制栏具有背景色和圆角
  • 播放按钮在控制栏中
  • 没有前进/后退按钮
  • 右上角只有一个音量控件,而不是图标列表

我如何使我的播放器看起来像他们的播放器?

AVPlayer中是否只有一个标记说“使用其他UI”?我应该使用第三方库吗?我与所有知名人士的工作有何不同?

注意:我确实发现了AVPlayerViewControlsStyle,从理论上讲我应该可以使用avPlayerView.controlsStyle = ...,但是从上面的设置可以看出-我实际上没有{{ 1}}。只是我自己的自定义视图和AVPlayerView。我尝试在Xcode中键入AVPlayerViewController来查看它是否可以自动完成,但是没有这样做-让我觉得我根本没有controller.view.controlsStyle

第二注:在查看Apple的官方文档时,我还看到了AVPlayerView。那是用来干什么的?我应该利用它吗?

0 个答案:

没有答案