2014-12-05 7 views
1

Я смотрел на ссылки UIWindow класса, и там я нашел UIScreen свойство, которое по умолчанию [UIScreen mainScreen]Что такое свойство UIScreen в UIWindow?

@property(nonatomic,retain) UIScreen *screen NS_AVAILABLE_IOS(3_2); 
// default is [UIScreen mainScreen]. changing the screen may be an expensive operation and should not be done in performance-sensitive code 

Мы initiailise на UIWindow объект с UIScreen в AppDelegate

self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds] 

Мне интересно, почему мы нуждаемся в собственности UIScreen в UIWindow

ответ

1

UIScreen относится к раме устройства.

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScreen_Class/index.html

Вы можете получить размер устройства для поиска устройств iPhone 4, iPhone 5, iPhone 6, iPhone 6+ & Ipad

[[UIScreen mainScreen] bounds] // дает и размер устройства.

Вы можете различать устройства в соответствии с указанными выше размерами.

[[UIScreen mainScreen] bounds].size.width // дает ширину устройства [[UIScreen mainScreen] bounds].size.height) // дает высоту устройства.

Или вы можете использовать таким образом

CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame]; 

Надеется, что это помогает ...

+0

спасибо за объяснение – vinay

1

По умолчанию все окна создаются на экране основного устройства. Если к устройству подключены дополнительные экраны, назначение другого экранного объекта для этого свойства приводит к тому, что окно будет отображаться на новом экране.

Согласно Apple, документы:

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

0

От IOS Developer Library

self.window считаются заявленным свойством вашего приложения делегат, который настроен на сохранение объекта окна. Если вместо этого вы создавали окно для внешнего дисплея, вы должны назначить его другой переменной, и вам нужно будет указать границы объекта, не являющегося основным объектом, представляющим этот дисплей.

При создании окон вы всегда должны устанавливать размер окна на полные границы экрана. Вы не должны уменьшать размер окна для размещения строки состояния или любых других элементов. Строка состояния всегда плавает поверх окна в любом случае, поэтому единственное, что нужно уменьшить, чтобы разместить строку состояния, - это представление, которое вы помещаете в свое окно. И если вы используете контроллеры представлений, контроллер вида должен автоматически обрабатывать размеры ваших просмотров.

0

Объект UIScreen определяет свойства, связанные с аппаратным дисплеем. У устройств iOS есть главный экран и нулевые или более подключенные экраны. Используйте этот класс для получения экранных объектов для каждого дисплея, подключенного к устройству. Каждый экранный объект определяет прямоугольник границ для соответствующего отображения и другие интересные свойства, такие как его яркость. Для получения дополнительной информации обратитесь к этому адресу docs

0

Ваша заявка имеет только 1 UIWindow, где все остальные виды просмотров. Когда приложение начинается UIWindow охватывает весь экран. Это причина, по которой вы создаете UIWindow, вам нужно установить размер его кадра в размер основного экрана.

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]; 

Какова роль UIScreen здесь?

UIScreen представляет собой прямоугольники экрана устройства. Ваш UIScreen знает больше о атрибутах экрана вашего устройства, таких как разрешение, соотношение сторон пикселей, яркость, затемнение.

С другой стороны UIWindow управляет вашей иерархией представлений и помогает отображать содержимое на экране. UIWindow во время инициализации получает свой фрейм от UIScreen связанного свойства и инициализирует его сам, чтобы он мог обладать максимальным ландшафтом с экрана устройства, чтобы отдать его подзонам. После выполнения инициализации UIWindow кадр включает строку состояния плюс область рисования плюс нижняя панель.

 Смежные вопросы

  • Нет связанных вопросов^_^