5

MPMoviePlayer (カスタム UIViewController 内) を使用してアプリケーションを作成し、ムービー プレーヤーの上にオーバーレイ UIViewController を使用する場合: - self.view.presentModalView... または self.view.addSubView... でプレーヤーにムービーをロードする他のより良い方法。私は今、モーダル ビューで作業しており、いくつかのカスタム ローテーションを実装する必要があることを除いて、すべてが機能します。これを行うためのより明確な方法を探しています。

わかりました多分いくつかの詳細。iPhoneアプリでは、モーダルビューのようなプレーヤーを追加し、それにオーバーレイビューを追加すると機能します。ただし、これはユニバーサル アプリであり、iPad では iPhone と同じようには機能しません。ipad splitView では、プレーヤーが詳細側 (非フルスクリーン) にあり、プレーヤーをダブルタップするとフルスクリーンになります。そして今、プレイヤーはキーウィンドウです。ここが最大の問題です。オーバーレイビューをサブビューおよびモーダルビューとして追加しようとしましたが、作成しましたが、そのオーバーレイはデバイスの向きを認識せず、オーバーレイ要素を変換する必要があり、これを回避しようとしています。そのビューで回転を検出する方法はありますか?

4

3 に答える 3

6

シンプルで最もエレガントなソリューション:

「実際の」フルスクリーンモードを使用せずに、MPMoviePlayerControllerのビューを画面いっぱいのサイズに拡大します- MPMoviePlayerController.view.frame = CGRectMake(0.0f, 0.0f, 768.0f, 1024.0f);。回転を許可する通常の'の上にMPMoviePlayerController'を保持します(addSubview)。カスタムインターフェイスビューをMPMoviePlayerControllerのビュー(addSubview)とprestoの上に保持すると、「フルスクリーン」で実行するかどうかに関係なく、適切に回転するビデオプレーヤーを取得できます。viewUIViewControllerview

于 2011-05-03T16:02:02.097 に答える
0

上記によると、私はこのようなことをしました:

mp = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]];

mp.movieSourceType = MPMovieSourceTypeStreaming;

mp.view.frame = CGRectMake(0.0f, 0.0f, 1024.0f, 768.0f);

[self.view addSubview:mp.view];

mp.controlStyle = MPMovieControlStyleNone;

[self.view addSubview:self.myOverlay];


[mp play];

実はとても簡単でした!コントロールスタイルを[なし]に選択し、プレーヤービューに不透明度の低いビューを追加するだけです。

于 2012-10-02T22:41:18.710 に答える
0

私は1つの解決策を見つけましたが、もっと良い方法があると思うので、あまり誇りに思っていませんが、この回避策はうまくいきます: - プロジェクトでは、グローバルデータを含むシングルトンクラスを使用しています。- 詳細ビューでアプリケーションを起動する場合 (UISplitView)willAnimateRotationToInterfaceOrientationメソッドが最初に呼び出されます。ここでは、現在の方向を取得し、シングルトン クラスに格納します。-後でプレーヤーの上にオーバーレイを追加すると、シングルトンからデータを読み取り、オーバーレイ要素を変換します。

于 2011-04-29T08:55:16.110 に答える