2014-01-21 5 views
6

In meinem Projekt ich embeded Ansicht verwenden, die MPMoviePlayerController nach innen hat.MPMoviePlayerController nicht mehr funktioniert im Vollbildmodus // Hochformat // iOS 7

Dieser Film Player stoppt nach dem Abstich Vollbild Umschalten arbeiten - es spielt 1 weitere Sekunde im Vollbildmodus und hält dann an und dreht sich wieder zum Inline-Modus.

Es nur im Portrait-Modus geschieht und nur für iOS 7 - wenn ich auf Vollbildmodus mit Querformat wechseln und drehen Sie dann das Gerät, es funktioniert gut.

Ich habe den Grund gefunden - irgendwie Navigationsleiste beteiligt ist. Ich benutze ECSlidingViewController im Projekt und Navigationsleiste durchscheinend „NEIN“ bei der Initialisierung eingerichtet:

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:myViewController]; 

navController.navigationBar.translucent = NO; 

self.topViewController = navController; 

Wenn ich navController.navigationBar.translucent = YES; den Movie-Player funktioniert gut eingerichtet. Aber ich muss transluzent = NEIN haben.

Also ich habe versucht, mit den Movie-Player-Events MPMoviePlayerWillEnterFullscreenNotification und MPMoviePlayerWillExitFullscreenNotification zu spielen. Es ist interessant, dass wenn ich navBar durchscheinend mache oder es vor dem Eintritt in den Vollbildmodus verberge, das Video ein wenig länger spielt (ungefähr 3-4 Sekunden), aber dann ist das Verhalten dasselbe.

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(moviePlayerWillEnterFullScreen:) 
               name:MPMoviePlayerWillEnterFullscreenNotification 
               object:nil]; 


-(void)moviePlayerWillEnterFullScreen:(id)sender{ 

    [self.navigationController setNavigationBarHidden:YES animated:NO]; 

OR 
    self.navigationController.navigationBar.translucent = YES; 
} 

Irgendwelche Ideen, was ich damit tun kann, werden sehr geschätzt.

UPD. Dieser Fehler wird in iOS 7.0.4

+0

klingt, als ob es irgendeine Art von Kategorie war (Pseudo-Überschreibung) Betrügerei auf dem Navigationsleiste geht weiter. Wenn dies der Fall ist, stellen Sie sicher, dass Sie diese Option deaktivieren, wenn Sie den Player verwenden, da sich seine Schnittstelle tatsächlich auf UINavigationBar für den oberen Teil verlässt. Kategorien in dieser Klasse sowie Swizzles hinterlassen ein Durcheinander, wenn sie nicht deaktiviert sind. – Till

+0

danke @Till Ich habe das Projekt überprüft - keine Kategorien oder andere navBar Anpassungen. –

+0

Das beinhaltet auch keinen 'drawRect:' Code für 'UINavigationBar', richtig? – Till

Antwort

3

IMP gegangen: Wenn Sie ARC verwenden Ich glaube, Sie die äußere Movieplayer beibehalten müssen. Ich habe es gerade einer neuen Eigenschaft zugewiesen.

Ich habe versucht, auf zwei Arten und ihre Arbeits für mich.

Wenn Sie sich selbst Ansicht als gesamter Bildschirm.

NSURL *url = [[NSBundle mainBundle] URLForResource:@"Robot" withExtension:@"m4v"]; 
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 
moviePlayer.view.transform = CGAffineTransformConcat(moviePlayer.view.transform,   CGAffineTransformMakeRotation(M_PI_2)); 
[moviePlayer.view setFrame: self.view.bounds]; 
[self.view addSubview: moviePlayer.view]; 
[moviePlayer play]; 

Und ohne Selbst mit sehen Sie mit gesamtem Vollbild arbeiten können (es wird die Vollbild-Eigenschaft nicht berufen hat)

NSURL *url = [[NSBundle mainBundle] URLForResource:@"Robot" withExtension:@"m4v"]; 
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 
moviePlayer.view.transform = CGAffineTransformConcat(moviePlayer.view.transform, CGAffineTransformMakeRotation(M_PI_2)); 
UIWindow *backgroundWindow = [[UIApplication sharedApplication] keyWindow]; 
[moviePlayer.view setFrame:backgroundWindow.frame]; 
[backgroundWindow addSubview:moviePlayer.view]; 
[moviePlayer play]; 
+0

danke. der Fehler ist in iOS 7.0.4 –

+0

@ Dmitry Khryukin verschwunden Wenn es hilft.Sie ​​sollten die Antwort akzeptieren. – python

Verwandte Themen