Я не уверен на 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];
Я надеюсь, что смогу помочь.