Вы можете представить фильм в своем собственном контроллере представления, который настроен для альбомной ориентации.
// in the VC where the user indicates he wants to see a movie...
- (void)startTheMovie {
// run a storyboard segue with a modal transition, or ...
MyMovieVC *movieVC = [[MyMovieVC alloc] initWithNibName:@"MyMovieVC" bundle:nil];
[self presentModalViewController:movieVC animated:YES];
}
// in MyMovieVC
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft) ||
(interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
// and the code that you wrote on view will appear
Вы можете включить кнопку отклонения в этом интерфейсе, или способ YouTube - отключить его сам.Вы можете сделать это, подписавшись на законченное уведомление:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayerFinished:)
name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
затем, на готовом сообщении
- (void)moviePlayerFinished:(NSNotification*)notification {
[self dismissModalViewControllerAnimated:YES];
}
Обратите внимание, что если вы делаете это в интерфейсе с вкладками, всеВкладки - даже те, которые не видны - должны дать согласие на изменение интерфейса.Это имеет некоторый смысл, но вызвало у меня душевную боль в прошлом.У меня нет красивого решения этого.Мой подход был публично доступным BOOL isLandscapeOK на моем AppDelegate.Этот MovieVC установит его в YES, а другие VC на вкладках ответят на книжную или альбомную ориентацию, если isLandscapeOK == YES.