#iphone #objective-c #video #orientation
#iPhone #objective-c #Видео #ориентация
Вопрос:
Эй,
у меня есть мое приложение с навигацией по панели вкладок и всем остальным в портретном режиме, где поворот не поддерживается. Теперь я должен транслировать это видео, которое должно быть альбомным. Я использую 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 часов -.
Спасибо!
Ответ №1:
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;
Комментарии:
1. Спасибо за быстрый ответ, это помогло! Но вот так кнопка «Готово» исчезла, так что нет возможности прервать просмотр фильма.. как мне вернуть его обратно?
2. Еще раз спасибо!
moviePlayerController.fullscreen = TRUE;
сломает его, показывая MainView, и не поворачивайте вид, не учитывая это, он отлично работает! Спасибо!3. если он не сочетается с другим языком, тогда он должен быть
moviePlayerController.fullscreen = YES;