可能重複:
「Incorrect」 frame/window size after re-orientation in iPhoneiOS 6的旋轉錯誤:窗口和根視圖控制器框架不會盡管轉動而改變
我試圖解決一個非常令人沮喪的問題與應用我在研究它時可能發現了iOS中的一個錯誤:
當您旋轉iPad時,視圖會旋轉,但它的框架不會更改。我正在運行一個計時器,它每秒都會打印出我的視圖的寬度和高度,雖然我可以看到視圖以可視方式旋轉,但無論如何,框架仍然保持「768x1024」。
從蘋果的文檔:
當用戶界面旋轉,調整窗口大小以匹配新的方向。該窗口調整其根視圖控制器的框架以匹配新的大小,並且該大小反過來沿着視圖層次傳播到其他視圖。
這正是沒有發生的事情,它給我帶來了各種麻煩。有誰知道如何修復旋轉,使框架更改?
重現步驟:
- 創建一個新的空項目
- 添加骨股的UIViewController作爲根查看
- 設置一個計時器,打印出的根視圖控制器的幀的寬度和高度
- 運行您的應用程序,並將其旋轉四周。這裏是我的代碼,我與測試:
- (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); }
重複http://stackoverflow.com/questions/2686882/incorrect-frame-window-size-after-re-orientation-in-iphone和http:/ /堆棧溢出。com/questions/11150495/ios-uiview-get-frame-after-rotation – Bot