我创建了一个简单的模块,我将子视图添加到UIWindow。在模拟器ios 7(Xcode 5.1.1)中,我打印了self.windows,我得到了:
<UIWindow: 0x8db1670; frame = (0 0; 768 1024); autoresize = W+H; gestureRecognizers = <NSArray: 0x8db1a70>; layer = <UIWindowLayer: 0x8db17d0>>
但是在ios8(Xcode 6 beta 6)上我得到了:
<UIWindow: 0x794320d0; frame = (0 0; 1024 768); gestureRecognizers = <NSArray: 0x79437a80>; layer = <UIWindowLayer: 0x7943c400>>
问题是:为什么帧属性存在差异?
答案 0 :(得分:10)
可能在你的AppDelegate中你正在初始化你的UIWindow
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
在iOS8之前,UIScreen的bounds属性返回了物理屏幕的边界矩形(即肖像),但是当设备旋转时,从iOS8边界开始更改documentation.
如果您想获得物理屏幕的边界矩形,现在可以使用nativeBounds。
注意:nativeBounds以像素为单位返回屏幕,但是bounds以磅为单位返回。
答案 1 :(得分:0)
我对此问题的解决方案只是忽略了:
CGAffineTransformMakeRotation
在iOS8上,现在一切都适合我!谢谢:))