[英]The most elegant way of creating a fullscreen overlay on Mac OS X (Lion)?
[英]How to know if a NSWindow is fullscreen in Mac OS X Lion?
我想我应该检查[NSApplication presentationOptions]
包含NSFullScreenModeApplicationPresentationOptions
,但我该如何实现呢?
编辑:使用[NSApplication presentationOptions]
不能像在我的基于文档的应用程序中那样,全屏可能有一些文档而其他文档没有。 我现在正在寻找另一种解决方案。 我想知道为什么没有一个名为[NSWindow isFullscreen]
的属性或类似的东西。
我本人只是在寻找解决方案,根据Matthieu的回答,我在NSWindow上创建了一个对我来说很好的类别。
@interface NSWindow (FullScreen)
- (BOOL)mn_isFullScreen;
@end
@implementation NSWindow (FullScreen)
- (BOOL)mn_isFullScreen
{
return (([self styleMask] & NSFullScreenWindowMask) == NSFullScreenWindowMask);
}
@end
您需要使用&按位运算符来测试正在使用该选项。 没有经过测试,但可能是这样的:
- (BOOL) inFullScreenMode {
NSApplicationPresentationOptions opts = [[NSApplication sharedApplication ] presentationOptions];
if ( opts & NSApplicationPresentationFullScreen) {
return YES;
}
return NO;
}
要查看是否有任何窗口处于全屏模式,只需检查窗口的样式掩码。
NSUInteger masks = [someNSWindow styleMask]
if ( masks & NSFullScreenWindowMask) {
// Do something
}
对于Swift 3.0
if let window = NSApp.mainWindow {
let isWindowFullscreen = window.styleMask.contains(NSFullScreenWindowMask)
}
显然,对于原始问题,您需要将NSApp.mainWindow
替换为您想要检查的文档窗口。
我在10.7之前( NSApplicationPresentationFullScreen
和NSFullScreenWindowMask
都不可用)处理它的方式是检查
if ([mainWindow frame].size.height == [[mainWindow screen] frame].size.height)
{
// window is fullscreen
}
这段非常古老的代码似乎仍然不仅适用于“Lion”,而且还适用于今天 - 在编写10.14.x时 - OS。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.