MPMoviePlayerController在全屏中添加子视图

133*_*ode 1 controls add objective-c subview mpmovieplayercontroller

我试过这个但是没有用,我在过去7个小时里一直在努力,请帮助我.我想在MPMoviePlayer的全屏视图中添加自定义按钮.

码:

moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];

        [self.view addSubview:moviePlayerController.view];
        moviePlayerController.fullscreen = YES;

        UIStoryboard *mainStoryBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];

        CustomControlsViewController *overlay = (CustomControlsViewController*)[mainStoryBoard instantiateViewControllerWithIdentifier:@"Custom Controls"];

        [moviePlayerController.view addSubview:overlay.view];

        [moviePlayerController play];
Run Code Online (Sandbox Code Playgroud)

Til*_*ill 10

首先,永远不要在视图中添加任何子视图MPMoviePlayerController.将它们添加到其背景视图或其父级作为兄弟.

这在MPMoviePlayerController文档中讨论:

将电影播放器​​视图视为不透明结构.您可以将自己的自定义子视图添加到电影顶部的图层内容中,但绝不能修改任何现有子视图.除了在电影上分层内容之外,您还可以通过在backgroundView属性中向视图添加子视图来提供自定义背景内容.

第二,使用正确的全屏时,MPMoviePlayerController不会重复使用其普通视图,而是将其内容直接添加到UIWindow实例上.因此,在使用"正确"的全屏模式时,您只有以下选项; 找到当前的关键窗口,并在切换到全屏模式后直接添加控件.

这样的事情应该做:

//are we in fullscreen-mode?
if (player.fullscreen)
{
    UIWindow *window = [UIApplication sharedApplication].keyWindow;
    if (!window)
    {
         window = [[UIApplication sharedApplication].windows objectAtIndex:0];
    }
    //we now got a proper window for use of our controls ... 
    //add them to the window instance!
}
Run Code Online (Sandbox Code Playgroud)

作为替代方案,只是不要使用"正确"的全屏,而是调整MPMovieViewController的视图以覆盖整个屏幕 - 我称之为"假"全屏.此选项的一大优点是您可以使用/捕获/覆盖正常的重定向.