当我编程式创建视图控制器时,出现了这个问题。这个控制器应该支持任何接口方向。根据良好的做法,我在-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