Добавление представлений в представление MPMoviePlayerController после нажатия полноэкранной кнопки в стиле элемента управления MPMovieControlStyleEmbedded

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

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

2 ответа

Я использую этот код и работает на 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

В полноэкранном режиме 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

Другие вопросы по тегам