2011-06-01 5 views
4

Привет,
У меня есть приложение с Tabbar Navigation и все остальное в портретном режиме, где нет вращения. Теперь мне нужно передать это видео, которое должно быть ландшафтом. Я использую 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]; 
} 

Так я называю Игроком. В 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 view на self 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

Еще раз! 'moviePlayerController.fullscreen = TRUE;' сломает его, показывая mainView, и не поворачивайте представление, оставив это, он отлично работает! Спасибо! – Nareille

Смежные вопросы