Ich habe ein UITabBarController im Hochformat dargestellt. Auf einer der Registerkarten habe ich eine Schaltfläche, die eine UIViewController modal zeigt (eine einfache Storyboard Segue führt die Aktion).
Ich möchte, dass diese modale Ansicht im Querformat angezeigt wird, aber ich kann nicht erreichen, dass sie sich automatisch dreht.
Ich habe dies in der modalen Ansichten Controller
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
Ich habe landscapeLeft zu den .plist unterstützten Ausrichtungen hinzugefügt (obwohl dies auch die TabBar gedreht werden kann, die ich nicht möchte)
Ich habe auch dies in die ViewDidLoad der modalen Ansicht hinzugefügt
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft;
aber ich kann sie nicht dazu bringen, sich von selbst zu drehen.
Danke
EDIT ----
Es scheint, dass shouldAutoRotate nicht einmal aufgerufen wird!
Außerdem versuche ich, die Ausrichtung zu erkennen, und dieser Code unten zeigt immer 2, unabhängig von der Ausrichtung!
if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortrait) {
NSLog(@"1");
self.hostView.frame = CGRectMake(0, 60, 200, 255);
} else {
NSLog(@"2");
self.hostView.frame = CGRectMake(0, 45, 480, 255);
}
EDIT 2 ---
Mein Fehler. Ich schätze, ich hätte erwähnen sollen, dass ich iOS 6 verwendet habe. Unter iOS 5 wird die Anzeige automatisch gedreht. shouldAutorotateToInterfaceOrientation ist veraltet, also muss ich mich über die neuen Methoden informieren.