MPMoviePlayerController не будет автоматически изменять поворот на альбомную - PullRequest
4 голосов
/ 01 июня 2011

Эй,У меня есть приложение с навигацией по вкладкам и все остальное в портретном режиме, где вращение не поддерживается.Теперь я должен транслировать это видео, это должно быть пейзажем.Я использую 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 view на self view, я просто поворачиваю родительский вид, а не вид игрока.

Где проблема и как я могу ее решить?Я пытаюсь с 5 часов или около тогоСпасибо!

1 Ответ

5 голосов
/ 01 июня 2011

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;
...