Отображение полноэкранного окна OS X на дополнительном мониторе с использованием какао

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

3 ответа

Решение

Сначала определите, какой экран вы хотите использовать, перебирая [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()];

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

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

Смотрите документацию Apple.

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

Ты можешь использовать [NSScreen screens] чтобы получить список доступных экранов. Смотрите здесь для деталей.

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

Попробуй это:

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

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

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

Другие вопросы по тегам