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

StackOverflow https://stackoverflow.com/questions/401240

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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) }];
                                                                                 }];
    }
}

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top