作为标题,当我使用 moviePlayer 播放电影时,我想知道 playControllerBar 什么时候会被关闭,这样我就可以控制我在 moviePlayer 中添加的视图。有人知道吗?告诉我,谢谢。
问问题
900 次
1 回答
1
我不是 100% 确定我是否理解正确。我假设你想要做的是:
- 播放电影
- 在(正在运行的)电影上添加自定义视图(叠加层)。
假设我刚刚写下的内容,我认为您必须考虑以下事项:
仅在标准播放器控件设置为无时才允许/可能在其顶部添加自定义叠加层
MPMoviePlayerViewController
(就我而言):[moviePlayerViewController.moviePlayer setControlStyle:MPMovieControlStyleNone];
在播放器顶部添加自定义叠加层与
addSubview
在任何其他视图上的过程基本相同[moviePlayerViewController.view addSubview:overlay];
上面的代码/概念将适用于 3.2 及更高版本,正如我刚刚读到的,您显然正在为 3.0 开发
而不是删除我答案的第一部分,我现在将解释如何在 3.0 上实现相同的效果
在 3.0 上它有点棘手(你现在肯定知道)。MPMoviePlayerController 不是视图控制器,只能在全屏模式下工作。一旦电影开始播放,keyWindow 就会改变!所以我们通过实现以下内容来利用它:
UIWindowDidBecomeKeyNotification
1) 在封装 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 回答