Как узнать, когда панель управления воспроизведением MoviePlayer будет отключена?
-
01-10-2019 - |
Вопрос
как указано в названии, когда я проигрываю фильм с помощью MoviePlayer, я хочу знать, когда панель playControllerBar будет отключена, чтобы я мог управлять своим просмотром, добавленным в MoviePlayer.Кто-нибудь знает об этом?Скажи мне , спасибо .
Решение
Я не уверен на 100%, правильно ли я вас понял.Я предполагаю, что то, что вы хотите сделать, это:
- воспроизведите фильм
- добавьте пользовательский вид (наложение) поверх (запущенного) фильма.
предполагая то, что я только что записал, я думаю, вы должны учитывать следующие вещи:
добавление пользовательского наложения поверх
MPMoviePlayerViewController
это (насколько мне известно) разрешено / возможно только в том случае, если для стандартных элементов управления плеером установлено значение none:[moviePlayerViewController.moviePlayer setControlStyle:MPMovieControlStyleNone];
добавление вашего пользовательского оверлея поверх проигрывателя - это, по сути, то же самое
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];
Я надеюсь, что смог бы помочь.