edz*_*o27 8 uiwindow uiinterfaceorientation ios7 xcode6 ios8
我创建了一个简单的模块,我将子视图添加到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>>
Run Code Online (Sandbox Code Playgroud)
但在ios8(Xcode 6 beta 6)上,我得到:
<UIWindow: 0x794320d0; frame = (0 0; 1024 768); gestureRecognizers = <NSArray: 0x79437a80>; layer = <UIWindowLayer: 0x7943c400>>
Run Code Online (Sandbox Code Playgroud)
问题是:为什么帧属性存在差异?
fdi*_*iaz 10
可能在您的AppDelegate中,您可以像这样初始化UIWindow
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
Run Code Online (Sandbox Code Playgroud)
在iOS8之前,UIScreen的bounds属性返回了物理屏幕的边界矩形(即肖像),但是当设备旋转文档时,从iOS8边界开始更改.
如果您想获得物理屏幕的边界矩形,现在可以使用nativeBounds.
注意:nativeBounds以像素为单位返回屏幕,但bounds以磅为单位返回.