Powiel możliwe:
“Incorrect” frame/window size after re-orientation in iPhoneiOS 6 Obrót Bug: Okna i ramy głównej View Controller nie zmienia się pomimo obrotów
Próbuję rozwiązać bardzo frustrujący problem z aplikacją - w trakcie badania Mogłem znaleźć błąd w iOS:
Po obróceniu iPada widok obraca się, ale jego ramka się nie zmienia. Używam timera, który wyświetla co sekundę szerokość i wysokość mojego widoku i chociaż widzę, że widok obraca się wizualnie, ramka pozostaje "768 x 1024" bez względu na wszystko.
Od docs Apple:
Gdy interfejs użytkownika obraca, okno jest zmieniany, aby dopasować nową orientację. Okno dostosowuje ramkę kontrolera widoku głównego do nowego rozmiaru, a ten rozmiar z kolei jest propagowany w dół hierarchii widoków do innych widoków.
To jest dokładnie to, co się nie dzieje i powoduje wiele kłopotów. Czy ktoś wie, jak naprawić rotację, aby ramka się zmieniła?
Kroki do odtworzenia:
- Utwórz nowy pusty projekt
- dodać kostnego UIViewController jako widoku głównego
- ustawić timer do wydrukowania szerokości ramy korzenia widok kontrolera i wysokość
- Uruchom aplikację i obróć ją dookoła. Oto mój kod mam testowanie z:
- (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 i http://przepełnienie stosu.com/questions/11150495/ios-uiview-get-frame-after-rotation – Bot