ここの人々はおそらく、他のさまざまなブログ投稿で、「ムービー プレーヤー ウィンドウを取得する」ための次のアプローチ (インデックス = 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