x janela de exibição OS em tela cheia no monitor secundário usando Cocoa

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

  •  03-07-2019
  •  | 
  •  

Pergunta

Eu estou trabalhando em um aplicativo de cacau Mac onde eu preciso para exibir uma janela / vista em um monitor secundário, em tela cheia. Eu sei como criar uma janela que poderia ser arrastado para o monitor secundário, mas eu estava querendo criar programaticamente a janela e torná-lo em tela cheia no monitor externo. Obrigado pela ajuda.

Foi útil?

Solução

Em primeiro lugar, determinar qual tela que deseja utilizar por iteração sobre [telas NSScreen].

Criar uma janela de tela cheia com:

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

Você pode querer google CGDisplayCapture () também.

Outras dicas

Você pode chamar o método enterFullScreenMode:withOptions: de NSView para acheieve o comportamento desejado.

Veja documentação da Apple

Leia aqui e aqui para as opções que podem ser fornecidos para este método.

Você pode usar [NSScreen screens] para obter a lista de telas disponíveis. Veja aqui para mais detalhes.

As animações de janelas em tela cheia são agitado e não parecem boas na minha opinião. A visualização em tela cheia é muito mais suave.

Tente isto:

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

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

Você pode conectar este para o item de menu de tela cheia no menu Window (depois de inserir isso em seu bico), mas certifique-se de alterar a ação que os fogos item de menu para o seu toggleMyViewFullScreen:. Ou o seu pode invocar toggleMyViewFullScreen programaticamente ou quando suas cargas de aplicativos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top