x janela de exibição OS em tela cheia no monitor secundário usando Cocoa
-
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.
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
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.