2010-08-24 10 views
6

estoy usando MPMoviePlayerViewController - con los controles del reproductor establece en: MPMovieControlStyleFullscreenMPMoviePlayerViewController personalización

Estoy teniendo un problema con algunos de los botones que se encuentran en MPMovieControlStyleFullscreen: avance, retroceso, y pantalla completa (el que tiene las flechas apuntando el uno al otro).

Me gustaría eliminar los botones de avance, retroceso y pantalla completa o controlar lo que hacen cuando el usuario los toca.

¡Gracias!

+0

Esta pregunta, por parte de otro usuario desbordado, puede dar una idea de lo que está tratando de lograr. Espero que esto ayude. ? luego. – GMoP

Respuesta

0

establecer MPMovieControlStyle de su objeto MPMoviePlayerController a MPMovieControlStyleNone

+1

El único problema es que necesito una forma para que el usuario final finalice el video si no quiere verlo todo. – stopmotion24

+0

Hola, ¿pueden decirme cómo pudieron hacerlo? ¿Hiciste tus propios controles? –

9

probar allí no es una forma de personalizar los MPMovieControlStyle valores proporcionados por Apple. Lo que debe hacer es apagar los controles de Apple (MPMovieControlStyleNone) y luego crear sus propios controles personalizados. Apple es bien con usted poner sus propios UIViews en la jerarquía de aquí, así que se puede empezar con algo como esto:

MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: YOUR_URL]; 
moviePlayer.controlStyle = MPMovieControlStyleNone; 
UIView *movieView = moviePlayer.view; 
[movieView addSubview: _movieControlsView]; 
[movieView bringSubviewToFront: _movieControlsView]; 

Dónde _movieControlsView se estableció anteriormente en clave o en IB.

Estéticamente, puede hacer lo que quiera, pero yo recomendaría seguir con algo que se parece a las opciones de Apple para no confundir al usuario. Para el proyecto que acabo de terminar, creé un botón transparente del tamaño exacto del reproductor de películas. Al hacer clic en el botón se desvanece en una barra de control en la parte inferior con mis controles personalizados. Si no se hace clic en uno de los controles, la barra de control desaparece nuevamente después de unos segundos.

+1

no funciona para mí - ios 7 –

+0

@ iTroyd23 Creo que Scott significa hacer una vista de control de superposición para deshabilitar la interacción del usuario del moviePlayer. –

3

En primer lugar, MPMoviePlayerController es un poco diferente que MPMoviePlayer * View * Controller, por lo que algunas de estas respuestas generan problemas al convertir aplicaciones que se crearon en un entorno iOS 4.3+.

He creado algunas aplicaciones utilizando MPMoviePlayerController que funcionó bien cuando se creó en iOS 3.2. Cuando lo reconstruí con XCode 3.2.6, (iOS 4.3), los videos ni siquiera se reproducen en el iPhone. Yo desde fijo que mediante la adición de la instancia MPMoviePlayerController a una vista secundaria, a continuación, la presentación de un modal (Player es un UIViewController) con el movplayer en fullScreenMode:

//from didSelectRowAtIndexPath 

Vid *selected = [items objectAtIndex:position]; 

player = [[Player alloc] init]; 
movplayer = [[MPMoviePlayerController alloc] initWithContentURL:selected.vidURL]; 
movplayer.view.frame = player.view.bounds; 
movplayer.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | 
UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | 
UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin; 

[player.view addSubview:movplayer.view]; 
[self presentModalViewController:player animated:YES]; 
[movplayer setFullscreen:YES animated:NO]; 
[movplayer play]; 
[player release]; 

//movplayer is released inside - (void)exitedFullscreen:(NSNotification*)notification 

Esto se hizo debido a la UINavigationBar siendo la mitad cortada cuando girando.

Cuando llegué a la versión iPad de la aplicación, la opción modal no funcionaría estéticamente. También estaba teniendo UISplitViewController navBar y barras de herramientas cortadas a la mitad cuando rotaba en modo de pantalla completa. Así que traté de implementar MPMoviePlayerViewController en lugar de MPMoviePlayerController. Con esta conversión, XCode me dio errores al intentar establecer:

movplayer.controlStyle = MPMovieControlStyleEmbedded; 

La forma correcta de hacer esto con un MPMoviePlayerViewController es:

movplayer.moviePlayer.controlStyle = MPMovieControlStyleEmbedded; 

Cuando se añade el jugador como subvista, los gestos de pellizco Alternará al reproductor entre pantalla completa y el tamaño de su parentView (player.view.bounds) sin problemas, así como también conservará las barras de herramientas y navBars nativos del elemento principal.

//iPad version with a view (viewForMovie) inside the DetailViewController 
movplayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[current vidURL]]; 
movplayer.moviePlayer.controlStyle = MPMovieControlStyleEmbedded; 
movplayer.view.backgroundColor = [UIColor clearColor]; 
movplayer.view.frame = viewForMovie.bounds; 
[viewForMovie addSubview:movplayer.view]; 

Así que estos dos ejemplos muestran algunas soluciones para aquellos que quieren convertir sus aplicaciones para el iPhone o el iPad a una nueva versión de iOS.

Cuestiones relacionadas