Отображение полноэкранного окна OS X на дополнительном мониторе с использованием какао - PullRequest
12 голосов
/ 30 декабря 2008

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

Ответы [ 3 ]

12 голосов
/ 30 декабря 2008

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

4 голосов
/ 30 декабря 2008

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

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

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

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

0 голосов
/ 22 января 2015

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

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

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

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

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

...