MPMoviePlayerController: Neuausrichtung von Hochformat auf Querformat und zurück auf Hochformat (iOS 4.1)

Seit iOS 3.2 der MPMoviePlayerController Klasse ermöglicht das einbetten eines Films in der view-Hierarchie.
Jetzt bin ich vor diesem Problem: ich erstelle meine portrait-Ansicht, indem Sie eine Instanz der MPMoviePlayerController. Wenn der Benutzer auf die "Vollbild" - button in dieser Ansicht in den Vollbild-Modus, aber der Blick bleibt im hochformat. Wenn der Benutzer das Gerät dreht der fullscreen-Film-Ansicht wird nicht automatisch gedreht, so dass meine app verbietet Landschaft interface-Orientierung.
So damit die auto-rotation von Film-Spieler fullscreen Ansicht, änderte ich meine Ansicht-controller shouldAutorotateToInterfaceOrientation: Methode zum zurückgeben JA für Landschafts -, wenn - und nur wenn - der movie player im Vollbildmodus.
Das funktioniert perfekt: wenn der Benutzer im Vollbildmodus und dreht sich dann zur Landschaft-der Spieler wird automatisch gedreht, um die Landschaft und den gesamten Bildschirm füllt.

//Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    //Return YES for supported orientations
    //return (interfaceOrientation == UIInterfaceOrientationPortrait);
    if(UIInterfaceOrientationIsPortrait(interfaceOrientation)) {
        return(YES);
    }

    if(UIInterfaceOrientationIsLandscape(interfaceOrientation)) {
        return([movieController isFullscreen]);
    }

return(NO);
}

Nun das Problem entsteht, wenn ich berühren Sie die Schaltfläche "Fertig" in der full-screen-Ansicht, während die übrigen in der Landschaft. Der komplette Bildschirm wird geschlossen, und dann, was ich sehe, ist meine ursprüngliche Ansicht autorotated: ich will aber nicht diese auto-rotation.

Eine teilweise, aber keine akzeptable Lösung, ist zu hören für "MPMoviePlayerDidExitFullscreenNotification" und, wenn die Schnittstelle gewechselt wird, um Landschaft, Kraft re-Orientierung zu verwenden, die ohne Papiere und private Funktion:

[[UIDevice currentDevice] setOrientation:UIDeviceOrientationPortrait]

Diese funktioniert, ist aber nicht akzeptabel, da die Verwendung dieser Methode ist verboten.

Ich versuchte, Sie zu zwingen, Orientierung über [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait] aber da bin ich in eine Tab-Leiste, das funktioniert nicht (der UITabBar bleibt Landscape-Format).

Vielen Dank für Ihre Hilfe

InformationsquelleAutor der Frage viggio24 | 2010-10-18

Schreibe einen Kommentar