[обновление]
Как было рекомендовано, я изменил все контроллеры родительского представления для поддержки всех ориентаций.Моя структура приложения выглядит следующим образом: AppDelegate> RootViewController> Видео> VideoDetails> MPMoviePlayerViewController.
Видео будет воспроизводиться в альбомной ориентации, если я изменю все это для поддержки всех ориентаций.Но поддержка всех направлений - это не то, чего я хочу, а другие проблемы.Есть ли какая-то другая работа или что-то еще, что я могу сделать?
Спасибо
[/ update]
У меня есть портретное приложение для iPhone, которое отображает видео с использованием пользовательского подкласса MPMoviePlayerViewController.Когда пользователь нажимает кнопку воспроизведения, я создаю экземпляр этого класса и представляю его модально следующим образом:
- (IBAction) playPressed:(id)sender {
NSString *filepath = [[NSBundle mainBundle] pathForResource:self.currentVideoModel.videoFileName ofType:@"m4v"];
NSURL *fileURL = [NSURL fileURLWithPath:filepath];
// MovieViewController is just a simple subclass of MPMoviePlayerViewController
self.moviePlayerController = [[MovieViewController alloc] initWithContentURL:fileURL];
// full screen code.
[self.moviePlayerController.moviePlayer setScalingMode:MPMovieScalingModeFill];
[self.moviePlayerController.moviePlayer setFullscreen:TRUE];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlaybackComplete:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayerController];
[self presentMoviePlayerViewControllerAnimated:self.moviePlayerController];
}
Проблема заключается в том, что он хорошо воспроизводится в портретной ориентации, но когда я поворачиваю iPhone в альбомную ориентацию, видео все еще воспроизводится вкнижный, а не альбомный :( Все контроллеры представления в приложении поддерживают только книжную ориентацию.
Мой подкласс MPMoviePlayerViewController переопределяет только следующий метод, чтобы разрешить изменение ориентации, но это не влияет:
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight || toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
Я даже пытался программно повернуть видео, но безуспешно, оно всегда остается в портретном режиме.
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
[self.view setTransform:CGAffineTransformMakeRotation(M_PI / 2)];
return true;
}
else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
[self.view setTransform:CGAffineTransformMakeRotation(M_PI * 2)];
return true;
}
else if (toInterfaceOrientation == UIInterfaceOrientationPortrait) {
[self.view setTransform:CGAffineTransformIdentity];
return true;
}
else return false;
}