Как узнать, когда playControllerBar moviePlayer будет отклонен? - PullRequest
0 голосов
/ 30 июня 2010

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

1 Ответ

1 голос
/ 30 июня 2010

Я не уверен на 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];

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

...