Добавление MPMoviePlayerController в полноэкранном режиме? - PullRequest
8 голосов
/ 22 марта 2011

У меня в приложении для iPhone есть кнопка UIB, которая при нажатии воспроизводит фильм. Код для воспроизведения фильма выглядит следующим образом:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"Robot" withExtension:@"m4v"];
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
moviePlayer.controlStyle = MPMovieControlModeDefault;
[moviePlayer.view setFrame: self.view.bounds];
[self.view addSubview: moviePlayer.view];
[moviePlayer play];

Мне бы хотелось, чтобы фильм открывался в полноэкранном режиме, как все фильмы до обновления iOS 3.2, где синяя кнопка «Готово» была в левом верхнем углу, а видео воспроизводилось в альбомном режиме. по умолчанию.

Кто-нибудь знает, как это сделать? Спасибо.

Ответы [ 2 ]

17 голосов
/ 22 марта 2011

Предполагая, что self.view использует весь экран:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"Robot" withExtension:@"m4v"];
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
moviePlayer.view.transform = CGAffineTransformConcat(moviePlayer.view.transform, CGAffineTransformMakeRotation(M_PI_2));
[moviePlayer.view setFrame: self.view.bounds];
[self.view addSubview: moviePlayer.view];
[moviePlayer play];

Теперь предположим, что вы в основном не хотите использовать текущий self.view, а просто работаете в полноэкранном режиме (я называю это; fake-fullscreen, поскольку он не вызывает свойство fullscreen-свойства);

NSURL *url = [[NSBundle mainBundle] URLForResource:@"Robot" withExtension:@"m4v"];
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
moviePlayer.view.transform = CGAffineTransformConcat(moviePlayer.view.transform, CGAffineTransformMakeRotation(M_PI_2));
UIWindow *backgroundWindow = [[UIApplication sharedApplication] keyWindow];
[moviePlayer.view setFrame:backgroundWindow.frame];
[backgroundWindow addSubview:moviePlayer.view];
[moviePlayer play];
11 голосов
/ 07 октября 2011

Я думаю, что лучший способ решить эту проблему - использовать MPMoviePlayerViewController вместо MPMoviePlayerController.

Класс MPMoviePlayerViewController реализует простой контроллер представления для отображения полноэкранных фильмов.В отличие от самостоятельного использования объекта MPMoviePlayerController для немедленного представления фильма, вы можете включить контроллер просмотра видеоплеера везде, где вы обычно используете контроллер просмотра.

Чтобы представить контроллер просмотра видеоплеера модально, вы обычно используете метод presentMoviePlayerViewControllerAnimated:.Этот метод является частью категории в классе UIViewController и реализуется Media Player framework.Метод presentMoviePlayerViewControllerAnimated: представляет контроллер представления проигрывателя фильмов, использующий стандартную анимацию перехода для представления видеоконтента.Чтобы закрыть модально представленный контроллер просмотра видеоплеера, вызовите метод dismissMoviePlayerViewControllerAnimated.

...