.bounds vs .keyWindow.bounds?

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

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

在我看来,他们总是返回相同的值,或者至less在我尝试过的less数testing用例中。

目前我使用UIScreen ,但我好奇知道这些调用之间的区别? 会不会有一些情况会返回不同的值?

方法略有不同。 [UIScreen mainScreen]返回设备的UIScreen对象,这个的界限将永远是设备屏幕的大小。 [UIApplication sharedApplication].keyWindow返回应用程序的当前关键UIWindow ,这可能不是设备屏幕的完整大小。

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