2010-08-24 18 views
6

Używam MPMoviePlayerViewController - z kontroli gracza ustawić na: MPMovieControlStyleFullscreenMPMoviePlayerViewController dostosowywania

Mam problem z niektórych przycisków, które są w MPMovieControlStyleFullscreen: do przodu, do tyłu i na dużym formacie (jeden ze strzałkami wskazując na siebie nawzajem).

Chciałbym usunąć przyciski do przodu, do tyłu i pełnoekranowe lub kontrolować, co robią, gdy użytkownik je klika.

Dziękujemy!

+0

To pytanie innego użytkownika przepełnienia może dać wgląd w to, co próbujesz osiągnąć. Mam nadzieję, że to pomoże. ? później. – GMoP

Odpowiedz

0

spróbuj ustawić MPMovieControlStyle swojego obiektu MPMoviePlayerController do MPMovieControlStyleNone

+1

Jedyny problem to to, że potrzebuję sposobu, aby użytkownik końcowy zakończył wideo, jeśli nie chce oglądać całego wydarzenia. – stopmotion24

+0

Witam, czy możesz mi powiedzieć, jak mogłeś to zrobić. czy wykonałeś własne kontrole? –

9

Nie ma sposobu, aby dostosować wartości MPMovieControlStyle dostarczonych przez Apple. Musisz wyłączyć kontrolki Apple (MPMovieControlStyleNone), a następnie utworzyć własne niestandardowe elementy sterujące. Apple jest w porządku z tobą oddanie własnych UIViews w hierarchii tutaj, więc można zacząć od czegoś takiego:

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

Gdzie _movieControlsView została utworzona wcześniej w kodzie lub w IB.

Estetycznie możesz robić, co chcesz, ale polecam trzymać się czegoś, co wygląda jak wybory Apple, aby nie mylić użytkownika. W przypadku projektu, który właśnie skończyłem, stworzyłem przejrzysty przycisk o dokładnym rozmiarze odtwarzacza filmowego. Kliknięcie przycisku powoduje zanikanie na pasku kontrolnym u dołu za pomocą własnych elementów sterujących. Jeśli jedna z kontrolek nie zostanie kliknięta, pasek kontrolny ponownie wyłączy się po kilku sekundach.

+1

nie działa dla mnie - ios 7 –

+0

@ iTroyd23 Myślę, że Scott oznacza utworzenie kontrolnego widoku nakładki, aby wyłączyć interakcję użytkownika MoviePlayera. –

3

Po pierwsze, MPMoviePlayerController jest trochę inny niż MPMoviePlayer * View * Controller, więc niektóre z tych odpowiedzi prowadzą do problemów podczas konwersji aplikacji, które zostały zbudowane w środowisku iOS 4.3+.

Zbudowałem kilka aplikacji przy użyciu MPMoviePlayerController, który działał poprawnie po zbudowaniu w systemie iOS 3.2. Kiedy przebudowałem go za pomocą XCode 3.2.6, (iOS 4.3), wideo nie odtwarza się nawet na iPhonie. I ponieważ ustalona, ​​że ​​dodając wystąpienie MPMoviePlayerController do podrzędny, a następnie prezentuje modalnego (Player jest UIViewController) z movplayer w 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 

Zrobiono to ze względu na UINavigationBar jest pół odciąć gdy obracanie.

Kiedy dotarłem do wersji na iPada aplikacji, opcja modalna nie zadziałałaby estetycznie. Miał także pasek nawigacyjny UISplitViewController i paski narzędzi połowicznie odcięte podczas obracania w trybie pełnoekranowym. Więc próbowałem implementacji MPMoviePlayerViewController zamiast MPMoviePlayerController. Z tej konwersji, XCode dał mi błędy podczas próby ustawienia:

movplayer.controlStyle = MPMovieControlStyleEmbedded; 

właściwy sposób, aby to zrobić z MPMoviePlayerViewController jest:

movplayer.moviePlayer.controlStyle = MPMovieControlStyleEmbedded; 

Gdy odtwarzacz jest dodawana jako podrzędny, gesty dociskowych przełącza odtwarzacz pomiędzy trybem fullScreen i rozmiarem parentView (player.view.bounds) płynnie, a także zachowuje paski narzędzi i navBars natywne dla rodzica.

//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]; 

Te dwa przykłady pokazują niektóre obejścia dla tych, którzy chcą przekonwertować aplikacje na iPhone'a lub iPada na nowszą wersję systemu iOS.

Powiązane problemy