Mögliche Duplizieren:
“Incorrect” frame/window size after re-orientation in iPhoneiOS 6 Rotation Bug: Fenster und Root-View-Controller-Rahmen nicht ändern trotz Rotation
Ich versuche, ein sehr frustrierendes Problem mit einer App zu lösen von mir - beim Studieren habe ich vielleicht einen Bug in iOS gefunden:
Wenn Sie das iPad drehen, dreht sich die Ansicht, aber der Rahmen ändert sich nicht. Ich benutze einen Timer, der die Breite und Höhe meiner Ansicht jede Sekunde ausgibt, und obwohl ich die Ansicht visuell drehen kann, bleibt der Rahmen "768x1024" egal was.
Von Apple docs:
Wenn die Benutzeroberfläche dreht, wird das Fenster mit der neuen Ausrichtung angepasst angepasst. Das Fenster passt den Rahmen seines Stammansicht-Controllers an die neue Größe an, und diese Größe wird wiederum in der Ansichtshierarchie an andere Ansichten weitergegeben.
Dies ist genau das, was nicht passiert, und es verursacht mir alle möglichen Probleme. Kann jemand Rotation reparieren, so dass sich der Rahmen ändert?
Schritte zum Reproduzieren:
- Erstellen Sie ein neues leeres Projekt
- Stellen Sie einen Timer ein Knochen UIViewController als Root-Ansicht hinzufügen aus der Root-Ansicht-Controller des Rahmenbreite und Höhe drucken
- Führen Sie Ihre App aus und drehen Sie sie um. Hier ist mein Code Ich teste mit:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.rootViewController = [[UIViewController alloc] init]; NSLog(@"%fx%f", self.window.rootViewController.view.frame.size.width, self.window.rootViewController.view.frame.size.height); // Add a label to confirm orientation UILabel *orientationLabel = [[UILabel alloc] initWithFrame:CGRectMake(10,10,100,30)]; orientationLabel.text = @"Top Left"; [self.window.rootViewController.view addSubview: orientationLabel]; [NSTimer scheduledTimerWithTimeInterval:.3 target:self selector:@selector(testScale) userInfo:nil repeats:YES]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; }
- (void) testScale { NSLog(@"%fx%f", self.window.rootViewController.view.frame.size.width, self.window.rootViewController.view.frame.size.height); }
Duplikat http://stackoverflow.com/questions/2686882/incorrect-frame-window-size-after-re-orientation-in-iphone und http://Paketüberfluss.com/questions/11150495/ios-uiview-get-frame-nach-rotation – Bot