2013-07-04 9 views
4

У меня есть вид, что я хочу покрыть весь экран. И я хочу, чтобы его рамка охватывала весь экран. Просмотр переполнения стека я нашел эти два различных способа настройки просмотра кадра для покрытия экрана:[UIScreen mainScreen] .bounds vs [UIApplcation sharedApplication] .keyWindow.bounds?

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

Мне кажется, они возвращаются одинаковые значения всегда, или по крайней мере в нескольких тестовых случаев я пытался.

В настоящее время я использую UIScreen, но мне любопытно узнать разницу между этими вызовами? Будут ли случаи, когда они возвратят разные значения?

ответ

12

Методы немного отличаются. [UIScreen mainScreen] возвращает объекты UIScreen, границы этого всегда будут размером экрана устройств. [UIApplication sharedApplication].keyWindow возвращает текущий ключ UIWindow для приложения, который, возможно, не может быть полным размером экрана устройств.

Другим очевидным случаем, когда они могут отличаться, является то, что устройство подключено к нескольким экранам. В этом случае [UIScreen mainScreen].bounds всегда будет возвращать размер экрана устройства, но ключевое окно может быть на одном из других экранов, и оно будет иметь совершенно другой размер, в зависимости от того, к какому экрану он подключен.