0

作为标题,当我使用 moviePlayer 播放电影时,我想知道 playControllerBar 什么时候会被关闭,这样我就可以控制我在 moviePlayer 中添加的视图。有人知道吗?告诉我,谢谢。

4

1 回答 1

1

我不是 100% 确定我是否理解正确。我假设你想要做的是:

  1. 播放电影
  2. 在(正在运行的)电影上添加自定义视图(叠加层)。

假设我刚刚写下的内容,我认为您必须考虑以下事项:

  1. 仅在标准播放器控件设置为无时才允许/可能在其顶部添加自定义叠加层MPMoviePlayerViewController(就我而言):

    [moviePlayerViewController.moviePlayer setControlStyle:MPMovieControlStyleNone];
    
  2. 在播放器顶部添加自定义叠加层与addSubview在任何其他视图上的过程基本相同

    [moviePlayerViewController.view addSubview:overlay];
    

上面的代码/概念将适用于 3.2 及更高版本,正如我刚刚读到的,您显然正在为 3.0 开发

而不是删除我答案的第一部分,我现在将解释如何在 3.0 上实现相同的效果

在 3.0 上它有点棘手(你现在肯定知道)。MPMoviePlayerController 不是视图控制器,只能在全屏模式下工作。一旦电影开始播放,keyWindow 就会改变!所以我们通过实现以下内容来利用它:

UIWindowDidBecomeKeyNotification1) 在封装 MPMoviePlayerController 的类中,通过执行以下操作开始收听:

        [[NSNotificationCenter defaultCenter] addObserver: self 
                                             selector: @selector(keyWindowChanged:) 
                                                 name: UIWindowDidBecomeKeyNotification 
                                               object: nil];

2)使用您的keyWindowChanged:方法,您可以添加叠加层,以下片段正是我实现它的方式:

- (void)keyWindowChanged: (id) sender {

//NSLog(@"keyWindowChanged");
[[NSNotificationCenter defaultCenter] removeObserver: self name: UIWindowDidBecomeKeyNotification object: nil];
UIWindow *moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];

[moviePlayerWindow addSubview: overlayController.view];
[overlayController performSelector:@selector(fadeIn)]; 

}

同样,这仅在MovieControllMode通过这样做“隐藏”时才有效:

[newMPController setMovieControlMode: MPMovieControlModeHidden];

我希望我能帮上忙。

于 2010-06-30T07:45:38.187 回答