Добавление представлений в представление MPMoviePlayerController после нажатия полноэкранной кнопки в стиле элемента управления MPMovieControlStyleEmbedded - PullRequest
4 голосов
/ 23 марта 2012

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

Все вышеперечисленные функции прекрасно работают, но я хочу всегда показывать водяной знак поверх фильмов в режиме предварительного просмотра и полноэкранного просмотра. Водяной знак правильно отображается в окне предварительного просмотра, когда я добавляю метку в vcMoviePlayer.view, но я не могу заставить эту метку отображаться поверх фильма в полноэкранном режиме после нажатия полноэкранной кнопки. Я добавляю ярлык в vcMoviePlayer.view (чтобы вывести ярлык на передний план), когда проигрыватель фильмов отправляет MPMoviePlayerDidEnterFullscreenNotification, но он все равно не появляется. Кто-нибудь еще видел такое поведение? Кто-нибудь знает, как заставить вид появляться поверх фильма, воспроизводимого в полноэкранном режиме, после нажатия кнопки в полноэкранном режиме? Я потратил много времени, пытаясь понять это, и любая помощь очень, очень ценится. Спасибо!

Ответы [ 2 ]

4 голосов
/ 25 марта 2013

Я использую этот код и работает на iOS 5 и iOS 6

UIWindow *window = [[UIApplication sharedApplication].windows objectAtIndex:0];
UIView * videoView = [[window subviews] lastObject];

UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0.0f,0.0f,100.0f,100.0f)];
[videoView addSubview:customView];

В iOS 5 вы должны удалить customView на MPMoviePlayerWillExitFullscreenNotification

3 голосов
/ 23 марта 2012

В полноэкранном режиме MPMoviePlayerController больше не использует предоставленный суперпредставление, а непосредственно отображается в текущем (ключевом) окне.

Чтобы найти что-то, на что вы можете надеть ваши представления, когда игрок находится в полноэкранном режиме, сделайте следующее:

UIWindow *window = [UIApplication sharedApplication].keyWindow;
if (!window)
{
    window = [[UIApplication sharedApplication].windows objectAtIndex:0];
}

Теперь вы можете поместить свои пользовательские виды поверх этого окна, и оно будет видно, пока MPMoviePlayerController находится в полноэкранном режиме.

UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 
                                                              0.0f, 
                                                              100.0f, 
                                                              100.0f)];
[window addSubview:customView];

Чтобы найти подходящий момент для добавления / удаления пользовательских представлений, зарегистрируйте следующие уведомления и сделайте это в зарегистрированных обработчиках:

MPMoviePlayerDidEnterFullscreenNotification и MPMoviePlayerWillExitFullscreenNotification

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...