【问题标题】:Adding views to MPMoviePlayerController view after touching fullscreen button in control style MPMovieControlStyleEmbedded在控制样式 MPMovieControlStyleEmbedded 中触摸全屏按钮后将视图添加到 MPMoviePlayerController 视图
【发布时间】:2012-03-23 17:58:12
【问题描述】:

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

上述所有功能都很好用,但我希望始终在预览和全屏视图中的电影上显示水印。当我向 vcMoviePlayer.view 添加标签时,水印在预览视图中正确显示,但在按下全屏按钮后,我无法让该标签以全屏模式显示在电影上。当电影播放器​​发送 MPMoviePlayerDidEnterFullscreenNotification 但它仍然没有出现时,我将标签添加到 vcMoviePlayer.view (确保将标签放在前面)。有没有其他人看到过这种行为?有谁知道在点击全屏按钮后如何查看全屏播放的电影?我花了很多时间试图弄清楚这一点,非常感谢任何帮助。谢谢!

【问题讨论】:

    标签: ios ipad mpmovieplayercontroller fullscreen watermark


    【解决方案1】:

    我使用此代码并在 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

    【讨论】:

    • 我刚试过这个,它不适用于 iOS 8 模拟器。
    【解决方案2】:

    在全屏模式下,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

    【讨论】:

    • this: UIWindow *window = [UIApplication sharedApplication].keyWindow; if (!window) { window = [[UIApplication sharedApplication].windows objectAtIndex:0]; } 对我不起作用,但 UIWindow *window = [[UIApplication sharedApplication].windows objectAtIndex:0];作品
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    相关资源
    最近更新 更多