如何知道NSWindow在Mac OS X Lion中是否全屏?

Nic*_*kkk 14 cocoa fullscreen nswindow nsapplication osx-lion

我想我应该检查是否[NSApplication presentationOptions]包含NSFullScreenModeApplicationPresentationOptions,但我该如何实现呢?

编辑:使用[NSApplication presentationOptions]不像在我的基于文档的应用程序中那样,全屏可能有一些文档而其他文档没有.我现在正在寻找另一种解决方案.我想知道为什么没有一个叫做的财产[NSWindow isFullscreen]或类似的东西.

Mar*_*fer 31

我本人只是在寻找解决方案,根据Matthieu的回答,我在NSWindow上创建了一个对我来说很好的类别.

@interface NSWindow (FullScreen)

- (BOOL)mn_isFullScreen;

@end

@implementation NSWindow (FullScreen)

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

@end
Run Code Online (Sandbox Code Playgroud)


Mat*_*ier 10

您需要使用&按位运算符来测试正在使用该选项.没有经过测试,但可能是这样的:

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

要查看是否有任何窗口处于全屏模式,只需检查窗口的样式掩码.

NSUInteger masks = [someNSWindow styleMask]
if ( masks & NSFullScreenWindowMask) {
 // Do something
}
Run Code Online (Sandbox Code Playgroud)


Joh*_*itt 5

对于 Swift 3.0

if let window = NSApp.mainWindow {
    let isWindowFullscreen = window.styleMask.contains(NSFullScreenWindowMask)
}
Run Code Online (Sandbox Code Playgroud)

显然,对于原始问题,您可以替换NSApp.mainWindow为您想要检查的任何文档窗口。

  • swift 4.1 = 让 isWindowFullscreen = window.styleMask.contains(.fullScreen) (4认同)