Das iPhone kann den Film nicht mithilfe von MPMoviePlayerViewController in den Querformatmodus drehen

8

[Update]

Wie empfohlen wurde, habe ich alle übergeordneten Ansichts-Controller geändert, um alle Orientierungen zu unterstützen. Meine App-Struktur lautet wie folgt: AppDelegate & gt; RootViewController & gt; Videos & gt; VideoDetails & gt; MPMoviePlayerViewController.

Das Video wird im Querformat abgespielt, wenn ich alle verändere, um alle Ausrichtungen zu unterstützen. Aber alle Orientierungen zu unterstützen ist nicht das, was ich will und andere Probleme verursacht. Gibt es noch andere Arbeiten oder irgendetwas anderes, was ich tun kann?

Danke

[/ update]

Ich habe eine iPhone-basierte App im Portraitformat, die Videos mithilfe einer benutzerdefinierten Unterklasse von MPMoviePlayerViewController anzeigt. Wenn der Benutzer auf Play klickt, erstelle ich eine Instanz dieser Klasse und präsentiere sie modal wie folgt:

%Vor%

Das Problem ist, dass es im Hochformat funktioniert, aber wenn ich das iPhone in Querformat umstelle, wird das Video immer noch im Hochformat und nicht im Querformat abgespielt :( Alle Ansichts-Controller in der App unterstützen nur Hochformat.

Meine MPMoviePlayerViewController-Unterklasse überschreibt nur die folgende Methode, um Orientierungsänderungen zuzulassen, hat aber keine Auswirkungen:

%Vor%

Ich habe sogar versucht, das Video programmatisch zu drehen, aber ohne Glück bleibt es immer im Hochformat.

%Vor%

}

    
bennythemink 24.01.2012, 04:47
quelle

1 Antwort

10

[EDIT] Die folgende Lösung funktionierte perfekt auf iOS5, funktioniert aber nicht mehr auf iOS6. Ich werde vielleicht etwas Zeit haben, dieses Problem hoffentlich in Zukunft zu untersuchen :( [/ EDIT]

OK, ich habe es behoben. Das hatte mit meinem Missverständnis zu tun, wie iOS eine App über Orientierungsänderungen benachrichtigt. Ich dachte, es würde jede Orientierungsänderung ausstrahlen, aber das ist nicht der Fall. Es folgt Ihrer Sichthierarchie, und es liegt an Ihnen, jedem Kind die Sichtweisen einer Orientierungsänderung mitzuteilen. Das war mein Verderben.

Meine App bestand aus folgendem Setup:

Fenster & gt; RootViewController & gt; Tabbar-Controller & gt; Nav-Controller & gt; Ansichtscontroller & gt; MPMoviePlayerViewController

Ich habe den Tabbar-Controller so unterklassifiziert, dass er für den Hochformatmodus nur wahr zurückgibt. Ich habe dies von der Root-View-Controller shouldAutoRotateToOrientation Methode zurückgegeben. Dadurch wurde sichergestellt, dass alle Ansichten nur im Hochformat angezeigt werden.

Dann habe ich den Film modal mit der presentMoviePlayerViewControllerAnimated -Methode vorgestellt, die vom RootViewController aufgerufen wurde. Dadurch wurde automatisch die Methode shouldAutoRotateToOrientation des benutzerdefinierten MPMoviePlayerViewControllers aufgerufen, die sowohl für Querformat als auch für Hochformat auf YES gesetzt wurde:)

    
bennythemink 26.01.2012, 01:10
quelle