2012-04-10 41 views
7

Tôi đã dành rất nhiều thời gian để tìm hiểu cách xác định xem NSWindow của tôi có ở chế độ toàn màn hình hay không và cũng như cách bật/tắt chế độ này khi vào hoặc ra khỏi chế độ toàn màn hình. Điều này rất hữu ích khi tôi đang làm động một cái nhìn để xem khác hoặc làm một cái gì đó mà đi vào hoặc ra khỏi chế độ toàn màn hình sẽ mess thứ lên. Sắp xếp giống như khóa xuống một cửa sổ đang được thay đổi kích thước.HOWTO: NSWindow ở chế độ toàn màn hình (sư tử) và kích hoạt/vô hiệu hóa?

Câu trả lời cho câu hỏi này được đăng bên dưới.

Trả lời

10

Đối với bất kỳ ai quan tâm đến đây là một số phương pháp bạn có thể phân loại hoặc sử dụng. Tôi dành một chút thời gian tìm kiếm làm thế nào để làm điều này và nghĩ rằng nó có thể giúp người khác ra:

Cái này sẽ cho bạn biết nếu bạn đang hoặc là không ở chế độ toàn màn hình:

@implementation MyWindow 

- (void) setStyleMask:(NSUInteger)styleMask { 

    MyWindowController *wndController = (MyWindowController *)self.windowController; 
    wndController.fullScreenMode = (styleMask & NSFullScreenWindowMask); 
    [super setStyleMask:styleMask]; 
} 

@end 

Tôi đang thiết lập một tài sản trong bộ điều khiển cửa sổ của tôi.

Đối với đầy đủ ở đây là những gì các loại trên NSWindow sẽ trông như thế:

@implementation NSWindow (CategoryNSWindow) 

#pragma mark - Full Screen Mode: 

- (BOOL) inFullScreenMode { 

    return (self.styleMask & NSFullScreenWindowMask); 
} 

@end 

Hai phương pháp này sẽ cho phép/vô hiệu hóa khả năng đi vào hoặc ra khỏi chế độ toàn màn hình:

- (void) enableFullScreen { 

    NSWindowCollectionBehavior behavior = [self.window collectionBehavior]; 
    behavior |= NSWindowCollectionBehaviorFullScreenPrimary; 
    [self.window setCollectionBehavior:behavior]; 
} 

- (void) disableFullScreen { 

    NSWindowCollectionBehavior behavior = [self.window collectionBehavior]; 
    behavior ^= NSWindowCollectionBehaviorFullScreenPrimary; 
    [self.window setCollectionBehavior:behavior]; 
} 

Đổi tên phương thức như bạn muốn.

2

Có hai sự kiện của NSWindowDelegate

  • DidWindowEnterFullScreen
  • DidWindowExitFullScreen

    đó giúp bạn giải quyết vấn đề của bạn.

+0

Đúng đó là những như thông báo, nhưng những gì tôi đã trình bày là một cách realtime biết. Ngoài ra không chắc chắn nếu bạn biết điều này, nhưng nếu bạn chụp windowWillEnterFullScreen thì bạn cũng phải thực hiện các đại biểu khác cho willUseFullScreenContentSize: Đó là loại một nỗi đau nếu bạn hỏi tôi. – Arvin

1

Hai sự kiện của NSWindowDelegate là:

– windowDidEnterFullScreen: 
– windowDidExitFullScreen: 
Các vấn đề liên quan