[UIScreen mainScreen].bounds против [UIApplication sharedApplication].keyWindow.bounds?

У меня есть мнение, что я хочу покрыть весь экран. И я хочу установить его рамку на весь экран. Просматривая переполнение стека, я обнаружил два разных способа установки рамки просмотра для покрытия экрана:

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

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

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


person MegaManX    schedule 04.07.2013    source источник


Ответы (1)


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

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

person Tark    schedule 04.07.2013