我现在有一个简单的iOS应用程序,可以使用AVPlayer播放M3U8。为了将自定义UI元素放置在播放器的顶部(主要是文本警报),我对可能是糟糕的体系结构进行了吉米操纵,并且我愿意废弃整个结构并重新开始。
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和ESPN使用完全相同的图标集搜索图标(尽管经过进一步检查,播放按钮和投射按钮略有不同)
类似地,Hulu和Amazon Prime使用完全相同的图标集。有人指出,Hulu和Amazon Prime足以区别为不同的图标集。不过,我仍然支持Netflix和ESPN具有相同的搜索按钮。我已经重新整理了图片以使其更明显
让我感到难以置信的是,每个公司都禁用了默认控件,从头开始构建了自己的用户界面,并且它们都 恰好发生 ,看起来都一样。我感觉要么AVPlayer可以启用此布局,要么Apple提供了一个从图标集构建UI的框架,该框架以这种方式进行布局,或者可能有一个第三方库被认为是“事实”标准,视频流,就像ExoPlayer是Android上的领先名称
将以上所有播放器与我的 播放器进行比较和对比,该播放器将Apple的默认UI用于AVPlayerViewController
:
AVPlayer中是否只有一个标记说“使用其他UI”?我应该使用第三方库吗?我与所有知名人士的工作有何不同?
注意:我确实发现了AVPlayerViewControlsStyle,从理论上讲我应该可以使用avPlayerView.controlsStyle = ...
,但是从上面的设置可以看出-我实际上没有{{ 1}}。只是我自己的自定义视图和AVPlayerView
。我尝试在Xcode中键入AVPlayerViewController
来查看它是否可以自动完成,但是没有这样做-让我觉得我根本没有controller.view.controlsStyle
第二注:在查看Apple的官方文档时,我还看到了AVPlayerView
。那是用来干什么的?我应该利用它吗?