1

我已经尝试过了,但它不起作用,我在过去 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];
4

1 回答 1

10

首先,永远不要将任何子视图添加到MPMoviePlayerController视图本身。将它们作为同级添加到其背景视图或其父级。

这在MPMoviePlayerController文档中进行了讨论:

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

2,当使用适当的全屏时,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!
}

作为替代方案,简单地不要使用“正确的”全屏,而是调整 MPMovieViewController 的视图以覆盖整个屏幕——我称之为“假”全屏。此选项的一大优势是您将能够使用/捕捉/覆盖正常的重新定向。

于 2013-02-11T10:51:44.050 回答