thể trùng lặp:
“Incorrect” frame/window size after re-orientation in iPhoneiOS 6 Rotation Bug: Window và Root View Controller khung không thay đổi bất chấp luân
Tôi đang cố gắng để giải quyết một vấn đề rất bực bội với một ứng dụng của tôi - trong nghiên cứu nó tôi có thể đã tìm thấy một lỗi trong iOS:
Khi bạn xoay iPad, chế độ xem quay, nhưng khung của nó không thay đổi. Tôi đang chạy bộ đếm thời gian in ra chiều rộng và chiều cao của chế độ xem mỗi giây và mặc dù tôi có thể thấy chế độ xem xoay trực quan, khung vẫn giữ nguyên "768x1024" bất kể cái gì.
Từ tài liệu của Apple:
Khi giao diện người dùng quay, cửa sổ thay đổi kích cỡ để phù hợp với định hướng mới. Cửa sổ điều chỉnh khung của bộ điều khiển chế độ xem gốc để phù hợp với kích thước mới và kích thước này lần lượt được truyền xuống phân cấp chế độ xem sang các chế độ xem khác.
Đây chính xác là những gì không xảy ra và điều đó gây ra cho tôi mọi rắc rối. Có ai biết làm thế nào để sửa chữa luân phiên để khung thay đổi?
bước để tái sản xuất:
- Tạo một dự án có sản phẩm nào mới
- Thêm một cổ phiếu xương UIViewController như xem gốc
- Thiết lập một bộ đếm thời gian để in ra chiều rộng khung xem điều khiển của rễ và chiều cao
- Chạy ứng dụng của bạn và xoay nó xung quanh. Dưới đây là mã của tôi Tôi đang thử nghiệm với:
- (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); }
bản sao của http://stackoverflow.com/questions/2686882/incorrect-frame-window-size-after-re-orientation-in-iphone và http:// stackoverflow.com/questions/11150495/ios-uiview-get-frame-after-rotation – Bot