4

iPhone 4/4s 用の iOS5 アプリケーションでは、ビューに MPMoviePlayerController ビューが追加された UIViewController があります。

[self.view insertSubview:self.fullscreenMoviePlayerController.view atIndex:2];

UIViewController は横向きのみをサポートします。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation 
{
  // Return YES for supported orientations.
  return  interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
          interfaceOrientation == UIInterfaceOrientationLandscapeRight;

}

これにより、回転が横向きのみに正しくロックされます。ただし、MPVideoPlayerController を全画面表示に設定すると、これは無視され、ビデオは横向きに制限されなくなり、電話が保持されている向きに回転します。

MPMoviePlayerController のビデオがフルスクリーンで縦方向に回転しないようにするにはどうすればよいですか? 電話を縦向きに回転させたときにビデオが回転しないことが重要です。

MPVideoPlayerController のサブクラス化とオーバーライドを試みまし shouldAutorotateToInterfaceOrientation:たが、これは効果がありません。

MPMoviePlayerController はビューの一部にすぎないため、MPMoviePlayerViewCotroller を使用することは絶対にありません。

4

4 に答える 4

2

MPMoviePlayerViewController の使用を本当に避けたい場合、これはかなり難しいようです。フルスクリーンでも機能するように見える 1 つのオプションは、MPMoviePlayerController のビューのフレームを手動で設定することです。(他の iOS の問題では、バックグラウンド ビューを使用すると異なる結果が得られる場合があることに注意してください。ただし、試してみる価値はあります)。

MyMPMoviePlayerController.view.frame = CGRectMake(0, 0, your numbers, here);

ただし、Apple はドキュメントで、コントローラーのフレームを親ビューのフレームに設定する必要があると述べています。

[MyMPMoviePlayerController.view setFrame: parentView.bounds];

洗練されていない解決策ですが、そうでない場合でも機能する可能性のある解決策は次のとおりです。

UIDeviceOrientationDidChangeNotification をリッスンし、ムービー プレーヤーのビューを取得します。トランスフォーム、境界、中心 (またはフレームなど) を適用して、横向きのビューに収まるようにします。回転しようとするたびに、基本的に元に戻します。(これはすべて、shouldAutorotateToInterfaceOrientation: で回転させないようにすることが本当にできないと仮定したものです)。

ここでの唯一の問題は、映画を縦向きのままにしておくことができますが、ビューを台無しにすることであり、これは望ましい結果ではありません.

于 2012-07-16T16:30:10.140 に答える
0

はい、MPMoviePlayerViewController を使用することはオプションではないとあなたが言ったのを見ました:

まだ…あなたが持っているViewControllerのMPMoviePlayerViewControllerを作成しようとしないのはなぜですか。それ以外の場合は、MPMoviePlayerControllerとView Controllerの他のアイテムが含まれています。これについての良い点は、MPMoviePlayerViewController には既に MPMoviePlayerController が組み込まれていることです。独自の viewController にある MPMoviePlayerController の代わりにそれを参照するだけです。これには、オーバーライドできる shouldAutorotateToInterfaceOrientation があり、正しいことを行う必要があります。

于 2012-07-17T08:44:12.973 に答える
-1

動画は2つ用意できます。他に選択肢がない場合。

于 2012-07-13T08:29:39.830 に答える