No hay button "Listo" en AVPlayerViewController

Estoy usando AVPLayerViewController para transmitir contenido. La reproducción funciona bien pero no veo el button "Listo" para descartar la vista.

Aquí es cómo configurar y mostrar el controller de vista

NSURL* url = [content localSessionUrl]; AVPlayerViewController *playerViewController = [[AVPlayerViewController alloc] init]; playerViewController.player = [AVPlayer playerWithURL:url]; [self.navigationController pushViewController:playerViewController animated:YES]; [self.navigationController setNavigationBarHidden:YES]; 

¿Es porque lo presiono en un control de navigation? introduzca la descripción de la imagen aquí

Sí, el button 'Listo' actúa como rechazo para un estilo de presentación modal. Si está presionando el AVPlayerViewController en la stack de navigation, necesitará manejar el popping usted mismo.

En lugar de presionar o agregar vista secundaria, intente presentar la vista. El button Listo se mostrará automáticamente. A continuación se muestra el fragment de código.

 -(void)playVideoWithUrl:(NSURL *)url{ AVPlayerViewController *playerViewController = [[AVPlayerViewController alloc]init]; playerViewController.player = [[AVPlayer alloc]initWithURL:url]; [self presentViewController:playerViewController animated:YES completion:nil]; playerViewController.view.frame = self.view.frame; [playerViewController.player play]; } 

Creo que el problema es cuando agrega la vista AVPlayerViewController a la vista en la pantalla que ocupa toda la pantalla, ya que la trata como en modo de pantalla completa. El truco consiste en agregarlo a una vista que ocupe una parte más pequeña de la pantalla.

Inicialmente hice esto:

 // Setup an AVPlayerViewController self.avPlayerViewController = [[AVPlayerViewController alloc] init]; if ([self.avPlayerViewController respondsToSelector:@selector(allowsPictureInPicturePlayback)]) { self.avPlayerViewController.allowsPictureInPicturePlayback = NO; } // Attach the Active Cloack AVPlayer to the AVPlayerViewController AVPlayer *player = self.avPlayer; self.avPlayerViewController.player = player; self.avPlayerViewController.view.frame = self.view.bounds; [self.view addSubview:self.avPlayerViewController.view]; // Setup the Parent Child relationshipo [self addChildViewController:self.avPlayerViewController]; [self.avPlayerViewController willMoveToParentViewController:self]; [self.avPlayerViewController didMoveToParentViewController:self]; 

Sin embargo, tuve el mismo problema que mi reproductor no tenía un button Listo, así que no pude salir del video.

Luego modifiqué mi xib / storyboard y agregué un UINavigationBar a la parte superior con un button hecho y una UIView como un contenedor debajo de este. Luego agregué el avPlayerViewController a esta vista de contenedor y los controles cambiaron mágicamente a un modo de pantalla completa. Recibí un button de pantalla completa para llevar el reproductor al modo de pantalla completa.

Sin embargo, luego tuve que crear un código para ocultar automáticamente mi barra de navigation y agregar un button hecho a esto y un título, etc.