How to know if a NSWindow is fullscreen in Mac OS X Lion?

北城以北 提交于 2019-11-30 01:16:47

问题


I guess I should check if [NSApplication presentationOptions] contains NSFullScreenModeApplicationPresentationOptions, but how do I achieve that?

EDIT: using [NSApplication presentationOptions] doesn't work as in my document-based app there might be some documents in fullscreen and others not. I'm now looking for another solution. I'm wondering why there isn't a property called [NSWindow isFullscreen] or something like that.


回答1:


I was just looking for a solution myself and based on Matthieu's answer I created a category on NSWindow that works fine for me.

@interface NSWindow (FullScreen)

- (BOOL)mn_isFullScreen;

@end

@implementation NSWindow (FullScreen)

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

@end



回答2:


You need to use an & bitwise operator to test that that option is being used. Not tested but probably something like this:

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

To see if any of your windows are in full screen mode simply check the style mask of the window.

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



回答3:


For Swift 3.0

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

Obviously, for the original question, you'd replace NSApp.mainWindow with whichever document window you're wanting to check.




回答4:


The way I handled it in pre-10.7 (where neither NSApplicationPresentationFullScreen nor NSFullScreenWindowMask was available) was to check

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

and this piece of really old code seem to still work not only on "Lion" but also on today's - at the time of writing 10.14.x - OS.



来源:https://stackoverflow.com/questions/6815917/how-to-know-if-a-nswindow-is-fullscreen-in-mac-os-x-lion

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!