这里的人们可能还在其他各种博客文章中看到了以下“获取电影播放器窗口”的方法——在 index = 1 处。虽然这种方法(见下面的片段)也可能有点“脆弱”,但它很可能是有点“更安全”,因为它不使用MPMoviePlayerController 中的任何未记录或非公共方法。
另请注意,您应该等到收到 MPMoviePlayerContentPreloadDidFinishNotification,这样电影播放器窗口 (idx=1) 才会确实存在 ;-)
请注意,我还在此处为 myOverlayView 分配了一个任意(整数值)视图“标签”——以便我可以在可能的情况下重新使用该视图,即检查它是否已添加到父播放器窗口中。
无论如何,这是相关的代码片段:
// use slight "hack" to get our (parent) movie-player window, should always (?) be the UIWindow at index = 1
//
UIWindow *moviePlayerWindow= [[[UIApplication sharedApplication] windows] objectAtIndex:1];
myOverlayView.center = CGPointMake(
moviePlayerWindow.bounds.size.width - (myOverlayView.bounds.size.height / 2) - myOverlayView.display_origin.y,
moviePlayerWindow.center.y
); // center our overlay-view
myOverlayView.hidden = NO; // and show it
if( [moviePlayerWindow viewWithTag: MY_OVERLAY_VIEW_TAG] == nil ) {
// haven't added our overlay-view as a sub-view to the main MoviePlayer window yet... so do that now
myOverlayView.tag = MY_OVERLAY_VIEW_TAG;
[moviePlayerWindow addSubview: myOverlayView];
}
[moviePlayerWindow bringSubviewToFront: myOverlayView]; // in any case, bring it to the foreground