Реализация полноэкранного опыта

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

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

Полноэкранный опыт целесообразен для многих приложений, но не для всех. Например, Средство поиска, Адресная книга и Калькулятор не предоставили бы преимущества пользователям путем принятия полноэкранного режима. То же является, вероятно, истиной для большинства служебных приложений. Большие приложения носителей, с другой стороны, могут часто получать преимущества от полноэкранного представления.

Начинаясь с OS X v10.7, Какао включает поддержку полноэкранного режима через APIs в NSApplication, NSWindow, и NSWindowDelegate протокол. Когда пользователь принимает решение ввести полноэкранный режим, Какао динамично создает пространство и помещает окно в то пространство. Это поведение позволяет пользователю иметь одно окно приложения, работающего в полноэкранном режиме в одном пространстве, при использовании других окон того приложения, а также других приложений, на рабочем столе в других пробелах. В то время как в полноэкранном режиме, пользователь может переключиться между окнами в текущее приложение или переключить приложения.

Приложения, реализовавшие полноэкранные пользовательские интерфейсы в предыдущих версиях OS X, должны рассмотреть стандартизацию на полноэкранном APIs в OS X v10.7.

Полноэкранный API в NSApplication

Полноэкранная поддержка в NSApplication предоставлен опцией представления NSApplicationPresentationFullScreen. Можно найти режим текущей презентации через NSApplication метод currentSystemPresentationOptions, который является также заметным значением ключа. Можно установить опции представления с помощью NSApplication метод setPresentationOptions:. (Обязательно наблюдайте ограничения на комбинации опции представления, задокументированные с NSApplicationPresentationOptions, и устанавливает опции представления в блоке try-catch, чтобы гарантировать, что Ваша программа не отказывает от недопустимой комбинации опций.)

Делегат окна может также указать, что панель инструментов окна удалена из окна в полноэкранном режиме и быть показанной автоматически со строкой меню включением NSApplicationPresentationAutoHideToolbar в опциях представления, возвращенных из window:willUseFullScreenPresentationOptions: метод NSWindowDelegate.

Полноэкранный API в NSWindow

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

Постоянный

Поведение

NSWindowCollectionBehaviorFullScreenPrimary

frontmost окно с этим поведением набора становится полноэкранным окном. Окно с этим поведением набора имеет полноэкранную кнопку в верхней правой из ее строки заголовка.

NSWindowCollectionBehaviorFullScreenAuxiliary

Windows с этим поведением набора может быть показан в том же пространстве с полноэкранным окном.

Когда окно входит в полноэкранный режим, styleMask изменения в NSFullScreenWindowMask отразить состояние окна. Установка styleMask проходит через setStyleMask: метод. В результате окно может переопределить этот метод, если это имеет настройку, чтобы сделать при вводе или выходе полноэкранный.

Окно может быть взято в или из полноэкранного режима с помощью toggleFullScreen: метод. Если полноэкранный режим поддержек приложений, это должно добавить пункт меню к меню View с toggleFullScreen: как действие, и nil как цель.

Полноэкранный API в протоколе NSWindowDelegate

Следующие уведомления отправляются, прежде и после того, как окно вводит и выходит из полноэкранного режима:

NSWindowWillEnterFullScreenNotification
NSWindowDidEnterFullScreenNotification
NSWindowWillExitFullScreenNotification
NSWindowDidExitFullScreenNotification

У делегата окна есть следующий соответствующий делегат окна методы уведомления:

windowWillEnterFullScreen:

windowDidEnterFullScreen:

windowWillExitFullScreen:

windowDidExitFullScreen:

NSWindowDelegate методы протокола, поддерживающие полноэкранный режим, перечислены в Таблице 3-1.

Табличные 3-1  методы делегата Окна, поддерживающие полноэкранный режим

Метод

Описание

window:willUseFullScreenContentSize:

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

window:willUseFullScreenPresentationOptions:

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

customWindowsToEnterFullScreenForWindow:

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

window:startCustomAnimationToEnterFullScreenWithDuration:

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

windowDidFailToEnterFullScreen:

Вызванный, если окну не удалось ввести полноэкранный режим.

customWindowsToExitFullScreenForWindow:

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

window:startCustomAnimationToExitFullScreenWithDuration:

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

windowDidFailToExitFullScreen:

Вызванный, если окну не удалось выйти из полноэкранного режима.

Для получения дополнительной информации о полноэкранном режиме, посмотрите Ссылку на протокол NSWindowDelegate и Инструкции по Интерфейсу пользователя OS X.