从 MPMoviePlayerController 标准控件中删除/隐藏全屏按钮

Posted

技术标签:

【中文标题】从 MPMoviePlayerController 标准控件中删除/隐藏全屏按钮【英文标题】:Remove/hide Full screen button from MPMoviePlayerController Standard Controls 【发布时间】:2012-12-13 08:35:22 【问题描述】:

我想从MPMoviePlayerController 标准控件中删除/隐藏全屏按钮,因为全屏模式会产生很多问题,而且不是我的应用程序的要求。我只想要 @987654322 @,stop,forward,reversecontrols。有人可以帮帮我吗?

【问题讨论】:

【参考方案1】:

没有标准的方法来做到这一点。这是您的选择。

您可以将MPMoviePlayerController's controlStyle 设置为 None 并创建您自己的自定义控件。缺点:这是很多工作。

您可以使用NSNotificationCenter 拦截MPMoviePlayerWillEnterFullscreenNotification 并立即将全屏模式设置为NO。缺点:基于用户的ios版本,这可能会导致闪烁或一些故障效果。

您可以浏览MPMoviePlayerController 视图的子视图,直到进入包含控件、sliderplay/pause button 以及全屏按钮的MPInlineTransportControls 视图,以及全屏按钮,它们都是MPTransportButton 类。找到那个,您可以将其隐藏或从其超级视图中删除。缺点:截至目前,它通过了应用商店的评论,并且在所有当前支持的iOS 版本上都能完美运行。但这可能随时改变。如果 Apple 决定重做他们的默认视频播放器,您最终可能会得到无法正常工作的代码。

【讨论】:

在 iOS 6 中找不到 MPInlineTransportControls 视图。 这个答案非常有帮助,如果您使用的是 NSNotificationCenter 方法,那就有点错误了。你应该听MPMoviePlayerDidEnterFullscreenNotification 而不是MPMoviePlayerWillEnterFullscreenNotification。如果您收听Will 而不是Did,您将在将fullscreen 属性设置为NO 之前将其设置为YES,并且该方法将不起作用。我还发现了一个错误,即在您拨打setFullScreen:NO 后视频消失但继续播放。为了防止这种情况,我在setFullScreen 方法之后调用了[video pause];,然后调用了[video play] 通过迭代所有 MPMoviePlayerController 子视图 ***.com/a/27482687/928599

以上是关于从 MPMoviePlayerController 标准控件中删除/隐藏全屏按钮的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序从后台进入前台时,MPMoviePlayerController 黑屏

MPMoviePlayerController:无法从全屏切换到嵌入式

MPMoviePlayerController 从流式视频中获取缩略图?

从 MPMoviePlayerController 标准控件中删除/隐藏全屏按钮

使用 MPMoviePlayerController 从 session.outputURL 播放视频

iOS- MPMoviePlayerController 无法从远程 URL 播放视频