Лучший способ сделать MPMoviePlayer с видом наложения - PullRequest
5 голосов
/ 26 апреля 2011

Когда мы создаем приложение с помощью MPMoviePlayer (в рамках пользовательского UIViewController) и с наложением UIViewController поверх проигрывателя фильмов, что лучше: - Загрузить фильм в проигрыватель с помощью self.view.presentModalView ... или self.view.addSubView ...Или есть другой лучший способ.Теперь я работаю с модальными представлениями, и все работает, за исключением того, что мне нужно реализовать некоторые пользовательские повороты.Я ищу более понятный способ сделать это.

Хорошо, может быть, еще немного подробностей.В приложении для iPhone я добавляю плеер как модальный вид и добавляю к нему вид наложения, и это работает.Но это универсальное приложение, и оно не работает на iPad так же, как на iPhone.В ipad splitView мой плеер находится на стороне деталей (не полноэкранный), когда я дважды нажимаю на плеер, он становится полноэкранным.И теперь игрок играет ключевую роль.Здесь самая большая проблема.Я попытался добавить представление наложения как вспомогательное и модальное представление, и я сделал это, но это наложение не учитывает ориентацию устройства, и мне нужно преобразовать элементы наложения, и это то, чего я пытаюсь избежать.Есть ли способ обнаружить вращение на этом виде?

Ответы [ 3 ]

6 голосов
/ 03 мая 2011

Простое и наиболее элегантное решение:

Не используйте «настоящий» полноэкранный режим, а масштабируйте представление MPMoviePlayerController в соответствии с размером заполнения экрана - MPMoviePlayerController.view.frame = CGRectMake(0.0f, 0.0f, 768.0f, 1024.0f);.Держите MPMoviePlayerController view поверх обычного UIViewController view, который допускает вращения (addSubview).Держите свой пользовательский вид интерфейса поверх представления MPMoviePlayerController (addSubview) и presto, вы получите правильно вращающийся видеоплеер, независимо от того, запущен он в «полноэкранном режиме» или нет.

0 голосов
/ 03 октября 2012

В соответствии с вышесказанным я сделал что-то вроде этого:

mp = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]];

mp.movieSourceType = MPMovieSourceTypeStreaming;

mp.view.frame = CGRectMake(0.0f, 0.0f, 1024.0f, 768.0f);

[self.view addSubview:mp.view];

mp.controlStyle = MPMovieControlStyleNone;

[self.view addSubview:self.myOverlay];


[mp play];

На самом деле это было так просто!Просто выберите стиль управления None и добавьте вид с низкой непрозрачностью на вид игрока.

0 голосов
/ 29 апреля 2011

Я нашел одно решение, но я не очень горжусь, потому что я знаю, что есть какой-то лучший способ, но этот обходной путь работает: - В моем проекте с одноэлементным классом, который содержит некоторые глобальные данные для меня.- При запуске приложения в подробном представлении (UISplitView) сначала вызывается метод willAnimateRotationToInterfaceOrientation.Здесь я получаю текущую ориентацию и сохраняю ее в синглтон-классе.Позже, когда я добавляю оверлей поверх плеера, я читаю данные из синглтона и преобразую элементы оверлея.

...