2011-06-01 8 views
4

こんにちは、
私のアプリケーションにはタブバーナビゲーションがあり、その他は回転がサポートされていないポートレートモードです。今私はこのビデオをストリーミングする必要があります。 基本的にうまく動作するMPMoviePlayerControllerを使用していますが、自動的にランドスケープモードに切り替えると言われていますが、ポートレートモードのままです。MPMoviePlayerControllerは、回転を自動的にランドスケープに変更しません。

- (IBAction) openFourthInfo:(id)sender{ 
NSURL *url = [NSURL URLWithString:@"http://my-video.mp4"]; 
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url]; 

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(moviePlaybackComplete:) 
              name:MPMoviePlayerPlaybackDidFinishNotification 
              object:player]; 

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(userPressedDone:) 
              name:MPMoviePlayerWillExitFullscreenNotification 
              object:player]; 

[self.view addSubview:player.view]; 
[mainView setHidden:YES]; //Need to hide another subview here 

player.fullscreen = YES; 
[player play]; 
} 

これはPlayerの呼び出し方法です。 userPressedDone:moviePlaybackComplete:では、私は基本的にちょうどmainView.setHidden = YES;を設定し、オブザーバーを削除し、プレーヤーを取り外してリリースします。

特別なことはありません。プレーヤーがなぜ肖像画にとどまるのでしょうか? 私は

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES]; 

を試してみましたこれは、変更ステータスバーのアニメーションが、ビューは同じとどまりました。追加することによって

[[player view] setBounds:CGRectMake(20, 0, 480, 320)]; 
[[player view] setCenter:CGPointMake(160, 240)]; 
[[player view] setTransform:CGAffineTransformMakeRotation(M_PI/2)]; 

何も起こりません。 player viewself viewに置き換えると、私はちょうどプレーヤービューではなく、回転する親ビューを取得します。

問題はどこにありますか?どのように解決できますか?私は5時間ほどかかりました.-
ありがとう!

答えて

5

MPMoviePlayerControllerは、デフォルトではランドスケープで動作しないため、ランドスケープで動作するようにするには、ビューにトランスフォームを適用する必要があります。

UIView * playerView = [moviePlayerController view]; 
[playerView setFrame: CGRectMake(0, 0, 480, 320)]; 

CGAffineTransform landscapeTransform; 
landscapeTransform = CGAffineTransformMakeRotation(90*M_PI/180.0f); 
landscapeTransform = CGAffineTransformTranslate(landscapeTransform, 80, 80); 

[playerView setTransform: landscapeTransform]; 

さらに、通常のフルスクリーンコントロールを使用する場合は、次のサンプルを使用します。

moviePlayerController.fullscreen = TRUE; 
moviePlayerController.controlStyle = MPMovieControlStyleFullscreen; 
+0

速い返信をいただきありがとうございました。しかし、 "完了"ボタンが消えてしまったので、映画を中止する機会はありません。どうすれば元に戻すことができますか? – Nareille

+0

@Nareille - 答えを更新しました。 – DHamrick

+1

THanks again! 'moviePlayerController.fullscreen = TRUE;'は、mainViewを表示してそれを分解し、ビューを回転させずに残して、それは素晴らしいです!ありがとうございました! – Nareille

関連する問題