iPhone не может повернуть фильм в альбомный режим с помощью MPMoviePlayerViewController

[обновление]

Как было рекомендовано, я изменил все родительские контроллеры представления для поддержки всех ориентаций. Моя структура приложения выглядит следующим образом: AppDelegate> RootViewController> Videos> 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;

}

8
задан iamsult 24 January 2012 в 05:41
поделиться