Как узнать, когда панель управления воспроизведением MoviePlayer будет отключена?

StackOverflow https://stackoverflow.com/questions/3146860

Вопрос

как указано в названии, когда я проигрываю фильм с помощью MoviePlayer, я хочу знать, когда панель playControllerBar будет отключена, чтобы я мог управлять своим просмотром, добавленным в MoviePlayer.Кто-нибудь знает об этом?Скажи мне , спасибо .

Это было полезно?

Решение

Я не уверен на 100%, правильно ли я вас понял.Я предполагаю, что то, что вы хотите сделать, это:

  1. воспроизведите фильм
  2. добавьте пользовательский вид (наложение) поверх (запущенного) фильма.

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

  1. добавление пользовательского наложения поверх MPMoviePlayerViewController это (насколько мне известно) разрешено / возможно только в том случае, если для стандартных элементов управления плеером установлено значение none:

    [moviePlayerViewController.moviePlayer setControlStyle:MPMovieControlStyleNone];
    
  2. добавление вашего пользовательского оверлея поверх проигрывателя - это, по сути, то же самое addSubview процедура, как и в любом другом представлении

    [moviePlayerViewController.view addSubview:overlay];
    

приведенный выше код / концепция будет работать в версии 3.2 и более поздних версиях, поскольку я только что прочитал, что вы, очевидно, разрабатываете для версии 3.0

вместо того, чтобы удалять первую часть моего ответа, я сейчас объясню, как добиться такого же эффекта в версии 3.0

в версии 3.0 это немного сложнее (как вы наверняка уже знаете).MPMoviePlayerController не является контроллером просмотра и работает только в полноэкранном режиме. Как только фильм начинает проигрываться, ключевое окно меняется!итак, мы используем это, реализуя следующее:

1) в вашем классе, который инкапсулирует MPMoviePlayerController, начните прослушивать UIWindowDidBecomeKeyNotification выполнив следующие действия:

        [[NSNotificationCenter defaultCenter] addObserver: self 
                                             selector: @selector(keyWindowChanged:) 
                                                 name: UIWindowDidBecomeKeyNotification 
                                               object: nil];

2) в течение вашего keyWindowChanged: Метод, которым вы можете добавить свое наложение, следующий фрагмент текста в точности соответствует тому, как я это реализовал:

- (void)keyWindowChanged: (id) sender {

//NSLog(@"keyWindowChanged");
[[NSNotificationCenter defaultCenter] removeObserver: self name: UIWindowDidBecomeKeyNotification object: nil];
UIWindow *moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];

[moviePlayerWindow addSubview: overlayController.view];
[overlayController performSelector:@selector(fadeIn)]; 

}

опять же, это работает только в том случае, если MovieControllMode является "скрытым", делая это:

[newMPController setMovieControlMode: MPMovieControlModeHidden];

Я надеюсь, что смог бы помочь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top