¿Cómo saber cuando el playControllerBar de MoviePlayer se descarta?
-
01-10-2019 - |
Pregunta
como el título, cuando juego película utilizando MoviePlayer Quiero saber cuando el playControllerBar se descarta, por lo que puedo controlar mi punto de vista agregado en MoviePlayer. ¿Hay alguien sabe? Dime, gracias.
Solución
No estoy 100% seguro de si he entendido bien. Asumo que lo que quiere hacer es:
- reproducir una película
- añadir una vista personalizada (superposición) en la parte superior de la película (en ejecución).
suponiendo que lo que acabo de escribir hacia abajo, yo creo que hay que considerar lo siguiente:
-
añadir una plantilla personalizada en la parte superior de
MPMoviePlayerViewController
es (por lo que a mí respecta) sólo permitió / posible si los controles del reproductor estándar se establece en ninguno:[moviePlayerViewController.moviePlayer setControlStyle:MPMovieControlStyleNone];
-
adición de su plantilla personalizada en la parte superior del reproductor es básicamente el mismo procedimiento
addSubview
como en cualquier otro punto de vista ??p>[moviePlayerViewController.view addSubview:overlay];
el código / concepto anterior funcionará en 3.2 y más tarde, como yo acabo de leer ahora que está, obviamente, el desarrollo de 3.0
en lugar de eliminar la primera parte de mi respuesta ahora a explicar cómo lograr el mismo efecto en 3.0
3.0 en la que es un poco más complicado (como Seguro sabe por ahora). MPMoviePlayerController no es un controlador de vista y sólo funciona en modo de pantalla completa,. Una vez que la película comienza de juego, el keyWindow cambia ! Así que hacemos uso de que al implementar la siguiente:
1) dentro de su clase que encapsula el MPMoviePlayerController, comenzar a escuchar la UIWindowDidBecomeKeyNotification
haciendo lo siguiente:
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(keyWindowChanged:)
name: UIWindowDidBecomeKeyNotification
object: nil];
2) withing su keyWindowChanged:
método que se puede añadir su superposición, la siguiente snipplet es exactamente como yo implementé:
- (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)];
}
De nuevo, esto sólo funciona si el MovieControllMode
está "oculta" al hacer esto:
[newMPController setMovieControlMode: MPMovieControlModeHidden];
Espero que pueda ayudar.