Принудительно перевести MPMoviePlayerController в альбомную ориентацию

#iphone #cocoa-touch #ios

#iPhone #прикосновение какао #iOS #cocoa-touch

Вопрос:

Я новичок в разработке iPhone и пишу свое первое приложение. Всему приложению нужен только портретный режим, за исключением воспроизведения фильмов. Я использую MPMoviePlayerController для запуска фильма, и он воспроизводится в режиме прорисовки. Как я могу заставить MPMoviePlayerController воспроизводить все фильмы в альбомной ориентации. Я использую Xcode 4 и создаю для iOS 4.0 . Нужно ли мне вводить некоторые настройки в info.plist, чтобы разрешить MPMoviePlayerController воспроизводить альбомную ориентацию?

Вот код, который я использую для инициализации MPMoviePlayerController:

 MPMoviePlayerController *theMovie = [[MPMoviePlayerController alloc] initWithContentURL: url]; 
[self.view addSubview:theMovie.view];
theMovie.allowsAirPlay=YES;
[theMovie setFullscreen:YES animated:YES];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:theMovie];
[theMovie play]; 
  

Ответ №1:

Встроить проигрыватель в его собственный контроллер просмотра и реализовать shouldAutorotateToInterfaceOrientation следующим образом:

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
}
  

Комментарии:

1. у меня это не работает — у меня есть контроллер просмотра, который отображает фильмы, и он полностью в альбомном режиме, но фильм по-прежнему запускается в портретном … идеи?

Ответ №2:

Создайте подкласс MPMoviePlayerViewController :

@interface MyMoviePlayerViewController ()

@end

 @implementation MyMoviePlayerViewController

- (BOOL)shouldAutorotate { return NO; }
- (NSUInteger)supportedInterfaceOrientations {
  return UIInterfaceOrientationMaskLandscape;
}

@end