Domanda

Credo che dovrei controllare se contiene [NSApplication presentationOptions] NSFullScreenModeApplicationPresentationOptions, ma come faccio a ottenere questo?

EDIT: usando [NSApplication presentationOptions] non funziona come nella mia app basato su documenti ci potrebbero essere alcuni documenti in fullscreen e altri no. Ora sto cercando un'altra soluzione. Mi chiedo perché non v'è una proprietà chiamata [NSWindow isFullscreen] o qualcosa di simile.

È stato utile?

Soluzione

Stavo solo cercando una soluzione me stesso e in base alla risposta di Matthieu ho creato una categoria a NSWindow che funziona bene per me.

@interface NSWindow (FullScreen)

- (BOOL)mn_isFullScreen;

@end

@implementation NSWindow (FullScreen)

- (BOOL)mn_isFullScreen
{
    return (([self styleMask] & NSFullScreenWindowMask) == NSFullScreenWindowMask);
}

@end

Altri suggerimenti

È necessario utilizzare un operatore & bit a bit di test che tale opzione è in uso. Non testato ma probabilmente qualcosa di simile:

- (BOOL) inFullScreenMode {
    NSApplicationPresentationOptions opts = [[NSApplication sharedApplication ] presentationOptions];
    if ( opts & NSApplicationPresentationFullScreen) {
       return YES;
    }
    return NO;
}

Per vedere se uno dei tuoi finestre sono in modalità a schermo intero è sufficiente controllare la maschera stile della finestra.

NSUInteger masks = [someNSWindow styleMask]
if ( masks & NSFullScreenWindowMask) {
 // Do something
}

Per Swift 3.0

if let window = NSApp.mainWindow {
    let isWindowFullscreen = window.styleMask.contains(NSFullScreenWindowMask)
}

Ovviamente, per la domanda iniziale, si dovrebbe sostituire NSApp.mainWindow con qualsiasi finestra del documento hai intenzione di controllare.

Il modo in cui ho gestito in pre-10.7 (dove né NSApplicationPresentationFullScreenNSFullScreenWindowMask era disponibile) era quello di verificare

if ([mainWindow frame].size.height == [[mainWindow screen] frame].size.height)
{
    // window is fullscreen
}

e questo pezzo di veramente vecchio codice sembrano funzionare ancora non solo sul "Leone", ma anche su di oggi - al momento della scrittura 10.14.x -. OS

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top