Добавить пользовательские элементы управления в MoviePlayer - PullRequest
14 голосов
/ 10 октября 2008

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

alt text

Я пытаюсь добавить что-то вроде элементов управления справа и слева от основных элементов управления фильма.

Я сделал это в Open SDK, добавив подкласс в представление игрока, но теперь в официальном SDK и Apple переходит на MPMoviePlayerController. Я не уверен, как это сделать.

Также с моей старой версией прошивки 1.x мне потребовалось, чтобы я захватил сенсорные события и скрыл / показал элемент управления самостоятельно. Я надеюсь, что есть способ сделать это со стандартными элементами управления, но если нет, то это нормально.

Заранее спасибо.

Ответы [ 5 ]

10 голосов
/ 12 октября 2008

Я нашел ЛУЧШИЙ способ сделать это!

Вы создаете свой проигрыватель фильмов, как обычно, а затем делаете следующее:

id vvController = [theMovie videoViewController];
[[vvController _overlayView] addSubview:mainView];

Где mainView - ваше пользовательское наложение. Это позволяет сделать так, чтобы пользовательский оверлей отображался и скрывался с обычными оверлеями, поскольку теперь они одно и то же!

Обратите внимание, что это все еще использует стандартные рамки, но это недокументировано в рамках. Так что он должен быть на 100% безопасен для магазина приложений, но «может» измениться без уведомления Apple в более поздних версиях.

10 голосов
/ 24 октября 2009

Люди здесь, вероятно, также видели в различных других сообщениях в блоге следующий подход «получить окно проигрывателя фильмов» - при index = 1. Хотя этот подход (см. Фрагмент ниже) также, возможно, немного «хрупок», скорее всего, это немного «безопаснее», поскольку не использует любые недокументированные или непубличные методы в MPMoviePlayerController.

Обратите внимание, что вам следует подождать, пока вы не получите MPMoviePlayerContentPreloadDidFinishNotification, так что окно проигрывателя фильмов (idx = 1) действительно будет существовать; -)

Примечание. Я также назначаю произвольный (целочисленный) вид "тега" для myOverlayView здесь - так, чтобы я мог повторно использовать вид, когда это возможно, то есть проверить, был ли он уже добавлен в окно родительского проигрывателя.

anyhoo, вот соответствующий фрагмент кода:

// use slight "hack" to get our (parent) movie-player window, should always (?) be the UIWindow at index = 1
//
UIWindow *moviePlayerWindow= [[[UIApplication sharedApplication] windows] objectAtIndex:1];

myOverlayView.center = CGPointMake(
                            moviePlayerWindow.bounds.size.width - (myOverlayView.bounds.size.height / 2) - myOverlayView.display_origin.y,
                            moviePlayerWindow.center.y
                                  ); // center our overlay-view

myOverlayView.hidden = NO; // and show it

if( [moviePlayerWindow viewWithTag: MY_OVERLAY_VIEW_TAG] == nil ) {
    // haven't added our overlay-view as a sub-view to the main MoviePlayer window yet... so do that now
    myOverlayView.tag = MY_OVERLAY_VIEW_TAG;
    [moviePlayerWindow addSubview: myOverlayView];
}
[moviePlayerWindow bringSubviewToFront: myOverlayView]; // in any case, bring it to the foreground
8 голосов
/ 10 октября 2008

Этот пример приложения , предоставляемый Apple, должен помочь. Из описания:

Демонстрирует, как использовать медиа Player Framework для воспроизведения фильма полноэкранный. Образец содержит код настроить фон фильма цвет, управление воспроизведением и масштабирование режим через встроенные настройки приложение. Также показывает, как рисовать настраиваемые элементы управления наложением поверх фильм во время воспроизведения.

1 голос
/ 14 октября 2014

Я не реализовал ALMoviePlayerController, но, похоже, он дает краткое и достаточное решение вашей проблемы.

Из репозитория git:

«Вставная замена для MPMoviePlayerController, которая предоставляет элементы пользовательского интерфейса и обеспечивает максимальную настройку»

https://github.com/alobi/ALMoviePlayerController

1 голос
/ 14 февраля 2013

Я рекомендую VideoPlayerKit. Поддерживает потоковую передачу, полноэкранный режим, AirPlay.

https://github.com/ign/VideoPlayerKit

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