Как узнать, является ли NSWindow полноэкранным в Mac OS X Lion?
Я думаю, я должен проверить, содержит ли [NSApplication presentationOptions]
NSFullScreenModeApplicationPresentationOptions
, но как мне это достичь?
EDIT: использование [NSApplication presentationOptions]
не работает, так как в моем приложении на основе документов могут быть некоторые документы в полноэкранном режиме, а другие нет. Теперь я ищу другое решение. Мне интересно, почему нет свойства под названием [NSWindow isFullscreen]
или что-то в этом роде.
Ответы
Ответ 1
Я просто искал решение самостоятельно, и на основе ответа Маттье я создал категорию в NSWindow, которая отлично работает для меня.
@interface NSWindow (FullScreen)
- (BOOL)mn_isFullScreen;
@end
@implementation NSWindow (FullScreen)
- (BOOL)mn_isFullScreen
{
return (([self styleMask] & NSFullScreenWindowMask) == NSFullScreenWindowMask);
}
@end
Ответ 2
Для проверки того, что этот параметр используется, вам необходимо использовать бит и побитовый оператор.
Не проверено, но возможно что-то вроде этого:
- (BOOL) inFullScreenMode {
NSApplicationPresentationOptions opts = [[NSApplication sharedApplication ] presentationOptions];
if ( opts & NSApplicationPresentationFullScreen) {
return YES;
}
return NO;
}
Чтобы узнать, находится ли какое-либо из ваших окон в полноэкранном режиме, просто проверьте маска стиля окна.
NSUInteger masks = [someNSWindow styleMask]
if ( masks & NSFullScreenWindowMask) {
// Do something
}
Ответ 3
Для Swift 3.0
if let window = NSApp.mainWindow {
let isWindowFullscreen = window.styleMask.contains(NSFullScreenWindowMask)
}
Очевидно, что для исходного вопроса вы заменили бы NSApp.mainWindow
на любое окно документа, которое вы хотите проверить.
Ответ 4
То, как я справлялся с этим до 10.7 (где ни NSApplicationPresentationFullScreen
ни NSFullScreenWindowMask
было доступно), заключалось в проверке
if ([mainWindow frame].size.height == [[mainWindow screen] frame].size.height)
{
// window is fullscreen
}
и этот кусок действительно старого кода, кажется, все еще работает сегодня.