2012-04-10 3 views
7

Я потратил много времени на выяснение того, как определить, работает ли мой NSWindow в полноэкранном режиме или нет, а также как включить/отключить его от входа в полноэкранный режим или из него. Это полезно, когда я оживляю вид на другое представление или что-то делаю, когда вхождение в полноэкранный режим или из него будет бесполезным. Это похоже на то, чтобы блокировать изменение размера окна.HOWTO: NSWindow в полноэкранном режиме (Lion) И включение/отключение?

Ответ на это размещен ниже.

ответ

10

Для всех заинтересованных здесь есть некоторые методы, которые вы можете классифицировать или использовать как есть. Я потратил некоторое время на поиски, как это сделать, и думал, что это может помочь кому-то еще из:

Это один скажет вам, если вы или не в полноэкранном режиме:

@implementation MyWindow 

- (void) setStyleMask:(NSUInteger)styleMask { 

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

@end 

Я установив свойство в моем оконном контроллере.

Для полноты здесь является то, что категория на NSWindow будет выглядеть так:

@implementation NSWindow (CategoryNSWindow) 

#pragma mark - Full Screen Mode: 

- (BOOL) inFullScreenMode { 

    return (self.styleMask & NSFullScreenWindowMask); 
} 

@end 

Эти два метода позволит включить/отключить возможность идти в или из полноэкранного режима:

- (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]; 
} 

Переименуйте методы, как вам угодно.

2

Есть два события NSWindowDelegate

  • DidWindowEnterFullScreen
  • DidWindowExitFullScreen

    , которые помогут вам решить вашу проблему.

+0

Правды те, как извещения, но то, что я представил это в режиме реального времени способ познания. Также не уверен, знаете ли вы об этом, но если вы запишете windowWillEnterFullScreen, тогда вам также придется реализовать другого делегата для willUseFullScreenContentSize: это боль, если вы спросите меня. – Arvin

1

Два события NSWindowDelegate является:

– windowDidEnterFullScreen: 
– windowDidExitFullScreen: 
Смежные вопросы