Ich muss sicherstellen, dass mein UIViewController
beim Laden entsprechend rotiert.
Ich habe die Methoden shouldAutorotateToInterfaceOrientation
implementiert und alles funktioniert gut, außer wenn die App zuerst geladen wird (wenn das iPhone im Querformat steht) oder wenn von einem UIViewController, der im Hochformat steht, aufgerufen wird, gibt interfaceOrientation
und [[UIDevice currentDevice] orientation]
immer das Hochformat zurück!
Ich habe Blogs und sogar einige SO-Fragen gelesen, aber keiner von ihnen scheint das zugrunde liegende Problem anzusprechen.
Ich verwende eine Standard-UINavigationController-Anwendung. Die erste Ansicht ist also der erste Controller, der auf den Stapel gelegt wird. Ich habe auch versucht, die Orientierung von self.navigationController abzufragen, aber auch das war erfolglos.
Jede Hilfe hier ist sehr willkommen.
BEARBEITEN: Hier ist mein Code für das viewWillAppear
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[self navigationController] setNavigationBarHidden:YES animated:NO];
UIInterfaceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown)
[self setPortraitMode];
else
[self setLandscapeMode];
}
BEARBEITEN 2
Hier ist, wie ich das aktuelle ausgebe:
UIInterfaceOrientation orientation = [[UIDevice currentDevice] orientation];
NSLog(@"currentDevice: %d", (int)orientation);
NSLog(@"statusbar: %d", (int)[UIApplication sharedApplication].statusBarOrientation);
NSLog(@"nav controller: %d", (int)self.navigationController.interfaceOrientation);
NSLog(@"interface orientation: %d", (int)self.interfaceOrientation);
Sie alle geben "1" aus
aber wenn ich diesen Code in die Methode willRotateToInterfaceOrientation
einfüge, geben sie die richtigen int-Werte aus (1,2,3 oder 4).