Как запустить полноэкранный режим на нескольких экранах в OSX

Я делаю приложение Cocoa, которое представляет слайд-шоу из видео и изображений. Если подключено несколько экранов (например, к Mac Mini), я хочу, чтобы на каждом экране отображалось разное содержимое. Каждое окно NSWindow должно быть полноэкранным на каждом экране NSScreen.

При разработке этого на OSX 10.8 я установил для каждого кадра NSWindow кадр NSScreen с помощью NSBorderlessWindowMask. Я не использовал явно NSApplicationPresentationFullScreen в NSApplication, я использовал NSApplicationPresentationHideDock и NSApplicationPresentationAutoHideMenuBar.

Кажется, что с этим подходом есть некоторые проблемы. Некоторые события OSX, кажется, заставляют панель меню отображаться и постоянно сдвигают окна вниз.

Есть ли лучший подход к этому теперь, когда OSX Mavericks обновила полноэкранную поддержку? Могу ли я открыть NSApplication в истинном полноэкранном режиме и принудительно использовать отдельный NSWindow для каждого NSScreen?

Спасибо.


person Giles    schedule 26.02.2014    source источник


Ответы (1)


Вы можете создать один экземпляр NSWindow на экран и переключить их в полноэкранный режим:

[self.windowA setFrame:[[[NSScreen screens] firstObject] visibleFrame] display:NO];
[self.windowB setFrame:[[[NSScreen screens] lastObject] visibleFrame] display:NO];
[self.windowA toggleFullScreen:nil];
[self.windowB toggleFullScreen:nil];
person Thomas Zoechling    schedule 26.02.2014
comment
Приведенный выше код не будет - но его должно быть очень легко изменить для поддержки › 2 окон. - person Thomas Zoechling; 26.02.2014
comment
Спасибо. Первый шаг — это то, чем я сейчас занимаюсь. Однако я не вызывал toggleFullScreen в окне. Я посмотрю, изменит ли это поведение. - person Giles; 26.02.2014