7

NSWindowがフルスクリーンモードであるかどうかを判断する方法と、NSWindowがフルスクリーンモードに入るのを有効または無効にする方法を理解するのに多くの時間を費やしました。これは、ビューを別のビューにアニメーション化したり、フルスクリーンモードに出入りするときに混乱するようなことをしているときに便利です。ウィンドウのサイズが変更されないようにロックするようなものです。

これに対する答えは以下に掲載されています。

4

3 に答える 3

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

これらの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];
}

必要に応じてメソッドの名前を変更します。

于 2012-04-10T21:12:47.063 に答える
2

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

  • DidWindowEnterFullScreen
  • DidWindowExitFullScreen

    あなたの問題を解決するのに役立ちます。

于 2012-04-12T17:26:08.747 に答える
1

NSWindowDelegate の 2 つのイベントは次のとおりです。

– windowDidEnterFullScreen:
– windowDidExitFullScreen:
于 2013-04-25T22:45:06.967 に答える