2011-07-25 15 views
13

Tôi đoán tôi nên kiểm tra xem [NSApplication presentationOptions] có chứa NSFullScreenModeApplicationPresentationOptions không, nhưng làm cách nào để đạt được điều đó?Làm thế nào để biết nếu một NSWindow là toàn màn hình trong Mac OS X Lion?

EDIT: sử dụng [NSApplication presentationOptions] không hoạt động như trong ứng dụng dựa trên tài liệu của tôi có thể có một số tài liệu ở chế độ toàn màn hình và một số tài liệu khác không có. Tôi đang tìm một giải pháp khác. Tôi tự hỏi tại sao không có một tài sản được gọi là hoặc một cái gì đó như thế.

Trả lời

30

Tôi chỉ đang tìm kiếm giải pháp cho bản thân và dựa trên câu trả lời của Matthieu tôi đã tạo một danh mục trên NSWindow phù hợp với tôi.

@interface NSWindow (FullScreen) 

- (BOOL)mn_isFullScreen; 

@end 

@implementation NSWindow (FullScreen) 

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

@end 
10

Bạn cần sử dụng toán tử bitwise & để kiểm tra xem tùy chọn đó có đang được sử dụng hay không. Không thử nghiệm nhưng có lẽ một cái gì đó như thế này:

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

Để xem nếu có các cửa sổ của bạn đang trong chế độ toàn màn hình chỉ cần kiểm tra mặt nạ phong cách của cửa sổ.

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

Cảm ơn bạn, đây chính xác là những gì tôi cần. Chỉ cần một sửa chữa: sử dụng 'NSApp' thay vì' NSApplication', nếu không bạn sẽ nhận được một cảnh báo. Oh ... và tất nhiên '- (BOOL) inFullScreenMode()' nên được viết là '- (BOOL) inFullScreenMode'. – Nickkk

+0

Thật không may, bây giờ có một vấn đề khác: trong ứng dụng dựa trên tài liệu của tôi, sử dụng giải pháp trên sẽ không hoạt động vì một số tài liệu có thể là toàn màn hình và những tài liệu khác thì không. Bất kỳ giải pháp nào khác? – Nickkk

+0

Chỉ cần kiểm tra các mặt nạ kiểu của tất cả các cửa sổ của bạn. Tôi đã thêm một số mã mẫu. –

2

Đối Swift 3,0

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

Rõ ràng, đối với câu hỏi ban đầu, bạn muốn thay thế NSApp.mainWindow với bất cứ tài liệu cửa sổ bạn đang muốn kiểm tra.