1

これを試しましたが、うまくいきません。過去 7 時間、これに苦労しています。助けてください。MPMoviePlayer の全画面表示にカスタム ボタンを追加したい。

コード:

moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];

        [self.view addSubview:moviePlayerController.view];
        moviePlayerController.fullscreen = YES;

        UIStoryboard *mainStoryBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];

        CustomControlsViewController *overlay = (CustomControlsViewController*)[mainStoryBoard instantiateViewControllerWithIdentifier:@"Custom Controls"];

        [moviePlayerController.view addSubview:overlay.view];

        [moviePlayerController play];
4

1 に答える 1

10

MPMoviePlayerControllerまず第一に、ビュー自体にサブビューを追加しないでください。それらを背景ビューまたはその親に兄弟として追加します。

これについては、MPMoviePlayerControllerドキュメントで説明されています。

映画プレーヤーのビューを不透明な構造と見なします。独自のカスタムサブビューをムービーの上のレイヤーコンテンツに追加できますが、既存のサブビューを変更しないでください。映画の上にコンテンツを重ねるだけでなく、backgroundViewプロパティのビューにサブビューを追加することで、カスタムの背景コンテンツを提供できます。

第2に、適切なフルスクリーンを使用すると、MPMoviePlayerControllerは通常のビューを再利用せず、コンテンツをインスタンスに直接追加しUIWindowます。したがって、「適切な」フルスクリーンモードを使用する場合は、次のオプションしかありません。フルスクリーンモードに切り替えた後、現在のキーウィンドウを見つけて、コントロールを直接追加します。

このようなことをする必要があります:

//are we in fullscreen-mode?
if (player.fullscreen)
{
    UIWindow *window = [UIApplication sharedApplication].keyWindow;
    if (!window)
    {
         window = [[UIApplication sharedApplication].windows objectAtIndex:0];
    }
    //we now got a proper window for use of our controls ... 
    //add them to the window instance!
}

別の方法として、単に「適切な」フルスクリーンを使用せずに、MPMovieViewControllerのビューのサイズを変更して、画面全体をカバーします。これを「偽の」フルスクリーンと呼びます。このオプションの大きな利点の1つは、通常の方向転換を使用/キャッチ/カバーできることです。

于 2013-02-11T10:51:44.050 に答える