[UIScreen mainScreen] .bounds vs [UIApplcation sharedApplication] .keyWindow.bounds?

时间:2013-07-04 08:33:28

标签: ios bounds uiapplication uiscreen

我认为我想覆盖整个屏幕。我想将其框架设置为覆盖整个屏幕。浏览堆栈溢出我发现这两种不同的方式来设置视图框以覆盖屏幕:

[UIScreen mainScreen].bounds
[UIApplcation sharedApplication].keyWindow.bounds

在我看来,他们总是会返回相同的值,或者至少在我尝试的几个测试用例中。

目前我正在使用UIScreen,但我很想知道这些来电之间的区别吗?是否会出现一些他们会返回不同价值的情况?

1 个答案:

答案 0 :(得分:12)

方法略有不同。 [UIScreen mainScreen]返回设备UIScreen对象,其范围始终是设备屏幕的大小。 [UIApplication sharedApplication].keyWindow会返回应用程序的当前密钥UIWindow,这可能是设备屏幕的完整大小。

这些可能不同的另一个明显情况是设备是否连接到多个屏幕。在这种情况下,[UIScreen mainScreen].bounds将始终返回设备屏幕大小,但关键窗口可能位于其他屏幕之一,并且它将具有完全不同的大小,具体取决于它所连接的屏幕类型。