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

Posted

技术标签:

【中文标题】[UIScreen mainScreen].bounds 与 [UIApplcation sharedApplication].keyWindow.bounds?【英文标题】:[UIScreen mainScreen].bounds vs [UIApplcation sharedApplication].keyWindow.bounds? 【发布时间】:2013-07-02 04:18:18 【问题描述】:

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

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

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

目前我正在使用UIScreen,但我很想知道这些调用之间的区别?在某些情况下它们会返回不同的值吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于[UIScreen mainScreen].bounds 与 [UIApplcation sharedApplication].keyWindow.bounds?的主要内容,如果未能解决你的问题,请参考以下文章

横向模式的“UIScreen mainScreen] applicationFrame]”

iPad:[UIScreen mainScreen].bounds 返回错误的坐标

为啥 [UIScreen mainScreen].bounds] 没有返回全屏尺寸?

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

[UIScreen mainScreen].scale 对于非 Retina iPad 总是返回 2

[UIScreen mainScreen].bounds.size 在 iOS8 中是不是变得依赖于方向?