6

我只想知道当播放控件可见或隐藏时是否有可能收到通知?

例如,我想展示一个具有以下风格的视频:

self.moviePlayerController.controlStyle = MPMovieControlStyleEmbedded;

当视频开始播放时,播放控件变得可见并自动消失。如果用户只是在视频上按标签,则会出现控件。

我需要一个通知,以便我可以调整我的视图(在MPMoviePlayerController视图下重新定位一些额外的按钮。这可能吗?因为不幸的是我在文档中什么也没找到。

4

1 回答 1

5

恐怕这些事件没有记录在案的通知。

您可能很幸运并通过嗅探所有已发布的通知来找到一些东西,如下面的答案:

捕获和跟踪所有通知

如何从 UIWebView 嵌入式 YouTube 视频播放接收 NSNotifications


然而,有一种方法可以简单地将您的控件与MPMoviePlayerControler's 的控件链接起来。这种方式绝对是无证的,并且在尝试在 iTunes 上销售您的应用程序时确实存在被拒绝的很大风险。

首先,您需要在 中定位界面视图MPMoviePlayerController,直到今天,它仍由MPInlineVideoOverlay使用嵌入式界面时调用的类表示。再一次,请注意他的这带来了很大的机会或破坏,因为苹果可能会决定在任何一天使用不同的命名。

/**
 * This quirky hack tried to locate the interface view within the supposingly opaque MPMoviePlayerController
 * view hierachy.
 * @note This has a fat chance of breaking and/or getting rejected by Apple
 *
 * @return interface view reference or nil if none was found
 */
- (UIView *)interfaceViewWithPlayer:(MPMoviePlayerController *)player
{
    for (UIView *views in [player.view subviews])
    {
        for (UIView *subViews in [views subviews])
        {
            for (UIView *controlView in [subViews subviews])
            {
                if ([controlView isKindOfClass:NSClassFromString(@"MPInlineVideoOverlay")])
                {
                    return controlView;
                }
            }
        }
    }
    return nil;
}

如果返回正确的视图,您只需将自己的添加添加到界面UIView addSubview: 上.)。

于 2012-07-19T17:04:50.400 回答