web-dev-qa-db-ja.com

MPMoviePlayerControllerの縦向きを横向きに、縦向きに戻す(iOS 4.1)

IOS 3.2以降、MPMoviePlayerControllerクラスを使用すると、ビュー階層にムービーを埋め込むことができます。今、私はこの問題に直面しています。MPMoviePlayerControllerのインスタンスを配置してポートレートビューを作成します。ユーザーが「フルスクリーン」ボタンをタッチすると、このビューはフルスクリーンモードになりますが、ビューは縦向きのままです。ユーザーがデバイスを回転させても、アプリが横向きのインターフェースの向きを禁止しているため、フルスクリーンのムービービューは自動回転しません。そのため、ムービープレーヤーの全画面表示の自動回転を許可するために、ビューコントローラーshouldAutorotateToInterfaceOrientation:メソッドを変更して、ムービープレーヤーが全画面モードの場合にのみ横向きにYESを返します。これは完全に機能します。ユーザーが全画面で入力してから横向きに回転すると、プレーヤーは横向きに自動回転し、画面全体に表示されます。

// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    //return (interfaceOrientation == UIInterfaceOrientationPortrait);
    if(UIInterfaceOrientationIsPortrait(interfaceOrientation)) {
        return(YES);
    }

    if(UIInterfaceOrientationIsLandscape(interfaceOrientation)) {
        return([movieController isFullscreen]);
    }

return(NO);
}

横向きのままで全画面表示の[完了]ボタンをタッチすると、問題が発生します。全画面が閉じてから、元のビューが自動回転します。ただし、この自動回転は必要ありません。

部分的ですが、受け入れられない解決策は、「MPMoviePlayerDidExitFullscreenNotification」をリッスンし、インターフェイスが横向きに回転している場合は、文書化されていないプライベート関数を使用するように方向を変更することです。

[[UIDevice currentDevice] setOrientation:UIDeviceOrientationPortrait]

これは機能しますが、このメソッドの使用は禁止されているため、受け入れられません。

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait]を使用して方向を強制しようとしましたが、タブバーを使用しているため、これは機能しません(UITabBarは横向きのままです)。

ご協力いただきありがとうございます

25
viggio24

MPMovieplayer用に別のビューコントローラーを使用できます。オーバーライドする必要はありません

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

元のViewControllerで。

MPMoviePlayerViewController を使用している場合、メソッドshouldAutorotateToInterfaceOrientation:はデフォルトでYESを返すため、すべてがすでに適切に設定されています。サブビューとして使用したり、
presentMoviePlayerViewControllerAnimated:

2
Jose Cherian

これをチェックしてください: MPMoviewPlayerControllerフルスクリーン再生回転と基になるUIViewController、ポートレートモードのみ(回転は許可されていません)

少し違う問題かもしれませんが、解決策は同じかもしれません。

1
Split