2012-04-10 3 views
7

私はNSWindowが全画面モードであるかどうかを判断する方法と、全画面モードに出入りすることを有効/無効にする方法を決定するのに多大な時間を費やしました。これは、ビューを別のビューにアニメートするときや、フルスクリーンモードに出入りするときに何かをするときに便利です。ウィンドウのサイズを変更しないように並べ替えます。HOWTO:NSWindowはフルスクリーンモード(Lion)で有効になっていますか?

この回答は以下に掲載されています。

答えて

10

ここで興味のある人は、あなたが分類するか、そのまま使用できる方法があります。私はこれを行う方法を探していくつかの時間を費やし、それは他の誰かを助けることができると思った:

あなたがいるか、フルスクリーンモードでない場合は、この1はあなたを教えてくれます:

@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 

これらの2つの方法をへ、またはフルスクリーンモードの外に移動する機能を有効/無効になります。

- (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

    の2つのイベントがあります。 NSWindowDelegateの

+0

真のものは、通知のようですが、私が提示することは知ってのリアルタイムな方法です。あなたがこれを知っているかどうかもわかりませんが、windowWillEnterFullScreenをキャプチャすると、willUseFullScreenContentSizeのために他のデリゲートを実装する必要があります。 – Arvin

1

二つの事象は以下のとおりです。

– windowDidEnterFullScreen: 
– windowDidExitFullScreen: 
関連する問題