14

カスタム コントロールを iPhone MoviePlayer に追加する方法を見つけようとしています。私がやろうとしていることの例については、次の画像を参照してください。

代替テキスト

基本的なムービー コントロールの左右にコントロールのようなものを追加しようとしています。

私はプレーヤービューにサブクラスを追加することでOpen SDKでこれを行っていましたが、現在は公式SDKとAppleがMPMoviePlayerControllerに移行しており、その方法がわかりません。

また、私の古い 1.x ファームウェアの方法では、タッチ イベントをキャプチャし、自分でコントロールを非表示/表示する必要がありました。標準のコントロールでこれを行う方法があることを願っていますが、そうでない場合でも問題ありません。

前もって感謝します。

4

5 に答える 5

10

これを行うための最良の方法を見つけました!

通常どおりムービー プレーヤーを作成し、次の手順を実行します。

id vvController = [theMovie videoViewController];
[[vvController _overlayView] addSubview:mainView];

「mainView」はカスタム オーバーレイです。これを行うと、カスタム オーバーレイが通常のオーバーレイと一緒に表示および非表示になるようになります。

これはまだ標準フレームワークを使用していますが、フレームワークでは文書化されていないことに注意してください。したがって、100% appstore で安全である必要がありますが、後のフレームワークでは Apple からの通知なしに変更される可能性があります。

于 2008-10-11T21:08:04.257 に答える
10

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

Apple が提供するこのサンプル アプリケーションが役に立ちます。説明から:

Media Player Framework を使用してムービーをフルスクリーンで再生する方法を示します。サンプルには、組み込みの設定アプリケーションを介して、ムービーの背景色、再生コントロール、およびスケーリング モードを構成するためのコードが含まれています。また、再生中にムービーの上にカスタム オーバーレイ コントロールを描画する方法も示します。

于 2008-10-10T13:27:35.997 に答える
1

VideoPlayerKitをお勧めします。ストリーミング、フルスクリーン、AirPlayをサポートします。

https://github.com/ign/VideoPlayerKit

于 2013-02-14T09:21:30.980 に答える