Visualizza la finestra a schermo intero su monitor secondario usando Cocoa
-
03-07-2019 - |
Domanda
Sto lavorando su un'app Cocoa Mac in cui devo visualizzare una finestra / vista su un monitor secondario, a schermo intero. So come creare una finestra che può essere trascinata sul monitor secondario, ma volevo creare programmaticamente la finestra e renderla a schermo intero sul monitor esterno. Grazie per l'aiuto.
Soluzione
Per prima cosa, determina quale schermata vuoi usare ripetendo su [Schermate NSScreen].
Crea una finestra a schermo intero con:
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()];
Potresti anche voler google CGDisplayCapture ().
Altri suggerimenti
È possibile chiamare il metodo enterFullScreenMode: withOptions:
di NSView
per raggiungere il comportamento desiderato.
Vedi documentazione di Apple .
Leggi qui e qui per le opzioni che possono essere fornite a questo metodo.
È possibile utilizzare [Schermate NSScreen]
per ottenere l'elenco delle schermate disponibili. Vedi qui per i dettagli.
Le animazioni della finestra a schermo intero sono instabili e secondo me non sembrano belle. La visualizzazione a schermo intero è molto più fluida.
Prova questo:
- (void)toggleMyViewFullScreen:(id)sender
{
if (myView.inFullScreenMode) {
[myView exitFullScreenModeWithOptions:nil];
} else {
NSApplicationPresentationOptions options =
NSApplicationPresentationHideDock |
NSApplicationPresentationHideMenuBar;
[myView enterFullScreenMode:[NSScreen mainScreen] withOptions:@{
NSFullScreenModeApplicationPresentationOptions : @(options) }];
}];
}
}
Puoi collegarlo alla voce di menu a schermo intero nel menu Finestra (dopo averla inserita nel pennino) ma assicurati di cambiare l'azione che la voce di menu attiva sul tuo toggleMyViewFullScreen:. Oppure puoi invocare toggleMyViewFullScreen a livello di codice o quando l'app viene caricata.