14

我想我应该检查 if [NSApplication presentationOptions]contains NSFullScreenModeApplicationPresentationOptions,但我该如何实现呢?

编辑: using[NSApplication presentationOptions]不起作用,因为在我的基于文档的应用程序中可能有一些文档全屏显示,而另一些则没有。我现在正在寻找另一种解决方案。我想知道为什么没有一个名为[NSWindow isFullscreen]或类似的属性。

4

4 回答 4

31

我自己只是在寻找一个解决方案,根据 Matthieu 的回答,我在 NSWindow 上创建了一个适合我的类别。

@interface NSWindow (FullScreen)

- (BOOL)mn_isFullScreen;

@end

@implementation NSWindow (FullScreen)

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

@end
于 2011-08-10T12:02:03.740 回答
11

您需要使用 & 位运算符来测试是否正在使用该选项。未经测试,但可能是这样的:

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

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

NSUInteger masks = [someNSWindow styleMask]
if ( masks & NSFullScreenWindowMask) {
 // Do something
}
于 2011-07-25T12:30:45.297 回答
4

对于 Swift 3.0

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

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

于 2017-01-25T16:47:56.907 回答
1

我在 10.7 之前的处理方式(既不可用NSApplicationPresentationFullScreen 也不NSFullScreenWindowMask可用)是检查

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

这段非常古老的代码似乎不仅适用于“Lion”,而且适用于今天 - 在编写 10.14.x 时 - 操作系统。

于 2019-05-02T15:24:31.580 回答