當我編程式創建視圖控制器時,出現了這個問題。這個控制器應該支持任何接口方向。根據良好的做法,我在-viewDidLoad
上創建了子視圖,並在-viewWillLayoutSubviews
上設置了框架。這種方法很好,因爲-viewWillLayoutSubviews
不僅在開始時佈局子視圖,還處理接口旋轉和視圖控制器視圖的其他更改。iOS 8和以前版本之間自動轉換的區別
在iOS 8上一切正常,但是當我在iOS 6和7上運行應用程序時,佈局被破壞了。我發現原因是該佈局基於self.view.frame
屬性。如果您嘗試在不同的iOS版本的-viewWillLayoutSubviews
上打印幀,當設備處於橫向模式時,您會得到不同的結果。在iOS 8
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
NSLog(@"%@", NSStringFromCGRect(self.view.frame));
}
輸出(轉動裝置爲橫向模式後):
2014年10月7日17:35:11.028 BlaBlaApp [361:12587] {{0,0}, {568,320}}在iOS 7和圖6(同樣的設備取向)
輸出:
2014年10月7日17:35:11.028 BlaBlaApp [361:12587] {{0,0},{320,568}}
在iOS 7和6視圖幀不改變時設備方向改變。但對我而言,視野的可見區域變化顯而易見!我決定調查實際界面旋轉的工作原理...
「此處輸入代碼」不屬於響應中。 – EricS 2014-10-07 18:24:02
謝謝!固定。 – kelin 2014-10-08 08:24:47