Отобразить полный экран окна os x на дополнительном мониторе с помощью Cocoa

Я работаю над приложением Cocoa Mac, где мне нужно отобразить окно/просмотр на дополнительном мониторе на весь экран. Я знаю, как создать окно, которое можно перетащить на дополнительный монитор, но я хотел программно создать окно и сделать его полноэкранным на внешнем мониторе. Спасибо за помощь.

Ответы

Ответ 1

Сначала определите, какой экран вы хотите использовать, итерации по экранам [NSScreen].

Создайте полноэкранное окно с помощью:

NSScreen *screen = /* from [NSScreen screens] */
NSRect screenRect = [screen frame];
NSWindow *window = [[NSWindow alloc] initWithContentRect:screenRect
    styleMask:NSBorderlessWindowMask
    backing:NSBackingStoreBuffered
    defer:NO
    screen:screen];
[window setLevel: CGShieldingWindowLevel()];

Возможно, вы захотите также использовать CGDisplayCapture().

Ответ 2

Вы можете вызвать метод enterFullScreenMode:withOptions: NSView, чтобы добиться желаемого поведения.

См. Документация Apple.

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

Вы можете использовать [NSScreen screens], чтобы получить список доступных экранов. Подробнее см. здесь.

Ответ 3

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

Попробуйте следующее:

- (void)toggleMyViewFullScreen:(id)sender
{
    if (myView.inFullScreenMode) {
      [myView exitFullScreenModeWithOptions:nil];
    } else {
      NSApplicationPresentationOptions options =
          NSApplicationPresentationHideDock |       
          NSApplicationPresentationHideMenuBar;

      [myView enterFullScreenMode:[NSScreen mainScreen] withOptions:@{
             NSFullScreenModeApplicationPresentationOptions : @(options) }];
                                                                                 }];
    }
}

Вы можете подключить его к пункту полноэкранного меню в меню "Окно" (после вставки его в свой нить), но обязательно измените действие, которое элемент меню запускает на ваш toggleMyViewFullScreen:. Или вы можете запрограммировать toggleMyViewFullScreen программно или когда ваше приложение загружается.