触摸控件样式中的全屏按钮后,向MPMoviePlayerController视图添加视图MPMovieControlStyleEmbedded

时间:2012-03-23 17:58:12

标签: ios ipad mpmovieplayercontroller fullscreen watermark

我有一个iPad应用,它在屏幕的上半部分有一个电影预览视图,在屏幕的下半部分有缩略图。当用户使用控件样式为MPMovieControlStyleEmbedded的MPMoviePlayerViewController点击电影在电影预览视图中开始播放的缩略图时。嵌入式样式具有内置功能,允许用户点击全屏按钮以全屏显示电影。

以上所有功能都很有效,但我想在预览和全屏视图中始终在电影上显示水印。当我向vcMoviePlayer.view添加标签时,水印在预览视图中正确显示,但是在按下全屏按钮后,我无法在全屏模式下显示该标签。当电影播放器​​发送MPMoviePlayerDidEnterFullscreenNotification时,我将标签添加到vcMoviePlayer.view(确保将标签放在前面),但它仍然没有出现。有没有人见过这种行为?点击全屏按钮后,是否有人知道如何在全屏播放的电影上显示视图?我已经烧了很多时间试图解决这个问题,非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:4)

我使用此代码并适用于iOS 5和iOS 6

UIWindow *window = [[UIApplication sharedApplication].windows objectAtIndex:0];
UIView * videoView = [[window subviews] lastObject];

UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0.0f,0.0f,100.0f,100.0f)];
[videoView addSubview:customView];

在iOS 5上,您必须删除MPMoviePlayerWillExitFullscreenNotification

上的customView

答案 1 :(得分:3)

在全屏模式下,MPMoviePlayerController不再使用提供的超级视图,而是直接在当​​前(关键)窗口显示。

为了找到可以在播放器处于全屏模式时开启视图的内容,请执行以下操作:

UIWindow *window = [UIApplication sharedApplication].keyWindow;
if (!window)
{
    window = [[UIApplication sharedApplication].windows objectAtIndex:0];
}

现在,您可以将自定义视图放在该窗口的顶部,并在MPMoviePlayerController处于全屏模式时显示。

UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 
                                                              0.0f, 
                                                              100.0f, 
                                                              100.0f)];
[window addSubview:customView];

要找到添加/删除自定义视图的正确时机,请注册以下通知并在注册的处理程序中执行此操作:

MPMoviePlayerDidEnterFullscreenNotificationMPMoviePlayerWillExitFullscreenNotification