MPMoviePlayerController 在其工具栏上有一个自定义按钮

Posted

技术标签:

【中文标题】MPMoviePlayerController 在其工具栏上有一个自定义按钮【英文标题】:MPMoviePlayerController with a Custom Button on its toolbar 【发布时间】:2009-10-20 17:18:07 【问题描述】:

您可能已经通过 iPhone 中的电子管观看过视频。

普通 MPMoviePlayerController 有上一个、下一个和播放/暂停按钮。

You Tube - 播放器上有两个额外的按钮。

=> 添加到左侧的收藏夹。

=> 在右侧通过电子邮件发送此视频。

我想为我的应用程序实现同样的功能。

但是我没有找到关于 - 实现这个的属性或方法。

我如何需要按钮?

当用户观看视频时,屏幕上不应出现任何按钮。 当用户点击视频时 - 工具栏出现在顶部和中心 中心工具栏上一般有三个按钮,上一个-下一个-播放/暂停 我想在下一个按钮和上一个按钮旁边添加一个按钮。

【问题讨论】:

我也在尝试做同样的事情。现在这是可能的,因为许多应用程序,例如 vimeo 和 dailymotion 也在他们的播放器上添加了这些自定义按钮。请帮忙! 【参考方案1】:

我认为您不能修改 Apple 提供的视图的界面。 一般的方法是播放您的视频,然后在播放完毕后,向用户显示带有所需按钮/和/或选项的视图。

在 iPhone 上的 YouTube 应用中可以看到一个例子。 youtube 视频播放后,用户会被发送到带有链接的摘要视图,以便再次观看视频、收藏视频、分享视频等。

【讨论】:

普通 MPMovieplayer 有上一个、下一个和播放/暂停按钮。你管视频 - 播放器上有两个额外的按钮。我需要知道该怎么做。 无法从您自己的代码中修改该 UI。苹果拥有第三方没有的特权。如果不使用某种未记录的/私有 API,则无法向 UI 添加按钮 - 这是应用商店批准流程所禁止的,并且可能会在 Apple 更新 API 时导致您的应用中断。 是的。 Apple 可以访问未公开的 API。为此,Apple 可以为所欲为。 未记录的 API 可以并且将来会发生变化,这可能会导致您的应用在应用更新操作系统时中断。据我所知,电影播放器​​控制器上没有任意设置按钮的方法,但是有一种设置控制模式的方法。如果您能找出传递什么来获取 youtube 按钮,那么我想您可以使用它们,但它没有在任何地方列出,因此很难找到。请记住我所说的关于未记录 API 的内容。 现在可以实现了。请参阅 Vimeo iPhone 应用程序。更新的答案会很有价值。【参考方案2】:

我会说可以将MPMoviePlayerControllermovieControlMode 属性设置为MPMovieControlModeHidden 并使用您自己的按钮、标题等集合添加一个子视图...但是@987654325 @ 仅继承自 NSObject,所以你不能这样做。也许您可以继承MPMoviePlayerController 并在调用play 时设置自己的东西,但我想MPMoviePlayerController 将自己显示为模态全屏视图并隐藏您设置的任何内容。 :-\

如果您只想弄乱控件的外观,我知道您可以弄乱各种对象的 drawRect: 方法来覆盖条和按钮的绘制方式。

例如,如下设置UINavigationBar的类别或子类并实现drawRect:将导致绘制自定义导航栏:

- ( void )drawRect:( CGRect )rect

    [ [ UIImage imageNamed:kSTNavigationBarBackgroundImageName ] drawInRect:CGRectMake( 0.0, 0.0, self.frame.size.width, self.frame.size.height ) ];

这替换了 Apple 导航栏的标准外观,并将其替换为自定义图像资产。除其他外,我们为our apps 这样做。

【讨论】:

以上是关于MPMoviePlayerController 在其工具栏上有一个自定义按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MPMoviePlayerController 上处理多个 SRT 文件

在 MPMoviePlayerController 上执行捏合手势时屏幕黑屏

在 UITableViewCell 中嵌入 MPMoviePlayerController

MPMoviePlayerController 在影片结尾更改控件样式

后台的 MPMoviePlayerController / AVAudioSession 在来电后不会重新开始播放

MPMoviePlayerController 在启动前显示空白屏幕?