怎么知道moviePlayer的playControllerBar什么时候会被解雇?

时间:2010-06-30 06:13:59

标签: iphone mpmovieplayercontroller iphone-sdk-3.2

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

1 个答案:

答案 0 :(得分:1)

如果我理解正确的话,我不是百分百肯定的。 我假设你想要做的是:

  1. 播放电影
  2. 在(正在播放的)电影上添加自定义视图(叠加)。
  3. 假设我刚写下来的内容,我认为你必须考虑以下事项:

    1. MPMoviePlayerViewController之上添加自定义叠加层(据我所知),只有在标准播放器控件设置为无时才允许/可能:

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

      [moviePlayerViewController.view addSubview:overlay];
      
    3. 以上代码/概念将适用于3.2及更高版本,正如我刚刚阅读的那样,您显然正在为3.0开发

      而不是删除我的答案的第一部分,我现在将解释如何在3.0

      上实现相同的效果

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

      1)在封装MPMoviePlayerController的类中,通过执行以下操作开始侦听UIWindowDidBecomeKeyNotification

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

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

      - (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];
      

      我希望我能提供帮助。