IOS 6 erzwingt die Ausrichtung des Geräts zur Landschaft

Ich gab eine App mit 10 View Controllern. Ich benutze den Navigationscontroller, um sie zu laden / entladen.

Alle außer einem sind im Hochformat. Angenommen, die 7. VC ist in Landschaft. Ich muss es im Querformat präsentieren, wenn es geladen wird.

Bitte schlagen Sie einen Weg vor, um die Ausrichtung in IOS 6 vom Hoch- zum Querformat zu ändern (und es wird gut sein, auch in iOS 5 zu arbeiten).

Hier ist, wie ich es gemacht habeVOR IOS 6:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    UIViewController *c = [[[UIViewController alloc]init] autorelease];
    [self presentModalViewController:c animated:NO];
    [self dismissModalViewControllerAnimated:NO];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

Das Präsentieren und Entlassen einer modalen VC zwang die App, ihre Ausrichtung zu überprüfenshouldAutorotateToInterfaceOrientation wurde gerufen.

Was ich in iOS 6 ausprobiert habe:

- (BOOL)shouldAutorotate{
    return YES;
}
-(NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskLandscape;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
    return UIInterfaceOrientationLandscapeLeft;
}

Unter Last bleibt der Controller weiterhin im Hochformat. Nach dem Drehen des Gerätes ändert sich die Ausrichtung nur in Ordnung. Ich muss den Controller jedoch so einstellen, dass er sich bei Belastung automatisch in den Querformatmodus dreht. Daher muss der Benutzer das Gerät drehen, um die Daten korrekt anzuzeigen.

Ein weiteres Problem: Nach dem Zurückdrehen des Geräts zum Hochformat wechselt die Ausrichtung zum Hochformat, obwohl ich in angegeben habesupportedInterfaceOrientations nurUIInterfaceOrientationMaskLandscape. Warum passiert es?

Ebenfalls,KEINER von den oben genannten 3 Methoden werden aufgerufen.

Einige (nützliche) Daten:

In meiner Plist-Datei habe ich 3 Ausrichtungen angegeben - alle außer auf dem Kopf.Das Projekt wurde in Xcode 4.3 IOS 5 gestartet. Alle Klassen einschließlich xibs wurden vor Xcode 4.5 IOS 6 erstellt, jetzt verwende ich die letzte Version.In der plist-Datei ist die Statusleiste sichtbar.In der xib-Datei (die ich im Querformat haben möchte) ist die Statusleiste "Keine", die Ausrichtung ist auf Querformat eingestellt.

Jede Hilfe wird geschätzt. Vielen Dank.

Antworten auf die Frage(12)

Ihre Antwort auf die Frage