我试过这个但是没有用,我在过去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];
答案 0 :(得分: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!
}
作为替代方案,只是不要使用"正确的"全屏但重新调整MPMovieViewController的视图以覆盖整个屏幕 - 我称之为"假的"全屏。此选项的一大优点是您可以使用/捕获/覆盖正常的重定向。