2011-07-25 12 views
13

[NSApplication presentationOptions]'un NSFullScreenModeApplicationPresentationOptions içerip içermediğini kontrol etmeliyim, ancak bunu nasıl başarabilirim?Mac OS X Lion'da NSWindow'un tam ekran olup olmadığını nasıl anlayabilirim?

DÜZENLEME: [NSApplication presentationOptions] kullanarak, belge tabanlı uygulamasında olduğu gibi tam ekran bazı belgeler olabilir ve diğerleri değil. Şimdi başka bir çözüm arıyorum. Merak ediyorum ki neden diye bir özellik ya da bunun gibi bir şey yok.

cevap

30

Sadece kendime bir çözüm arıyordum ve Matthieu'nun cevabına dayanarak NSWindow'da benim için iyi çalışan bir kategori yarattım. Swift 3.0

Açıkçası
if let window = NSApp.mainWindow { 
    let isWindowFullscreen = window.styleMask.contains(NSFullScreenWindowMask) 
} 

için

@interface NSWindow (FullScreen) 

- (BOOL)mn_isFullScreen; 

@end 

@implementation NSWindow (FullScreen) 

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

@end 
10

Bu seçeneğin kullanıldığını sınamak için bir & bitlik operatör kullanmanız gerekir. Test edilmedi ama böyle muhtemelen bir şey: senin pencerelerin herhangi basitçe pencerenin tarzı maskesini kontrol tam ekran modunda ise

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

görmek için.

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

Teşekkür ederim, bu tam olarak ihtiyacım olan şey. Sadece bir düzeltme: 'NSApplication' yerine' NSApp' kullanın, aksi takdirde bir uyarı alırsınız. Oh ... ve tabii ki - (BOOL) inFullScreenMode() '' (BOOL) inFullScreenMode' olarak yazılmalıdır. – Nickkk

+0

Maalesef şimdi başka bir sorun daha var: Belge tabanlı uygulamamda, yukarıdaki çözümün kullanılması, bazı belgelerin tam ekran olabileceğinden ve diğerleri olmadığından çalışmaz. Başka bir çözüm var mı? – Nickkk

+0

Tüm pencerelerinizin stil maskelerini kontrol edin. Bazı örnek kod ekledim. –

2

, orijinal soru için, size kontrol etmek isteyen konum hangisi belge penceresi ile NSApp.mainWindow değiştireceksiniz.