NSWindowがフルスクリーンモードであるかどうかを判断する方法と、NSWindowがフルスクリーンモードに入るのを有効または無効にする方法を理解するのに多くの時間を費やしました。これは、ビューを別のビューにアニメーション化したり、フルスクリーンモードに出入りするときに混乱するようなことをしているときに便利です。ウィンドウのサイズが変更されないようにロックするようなものです。
これに対する答えは以下に掲載されています。
NSWindowがフルスクリーンモードであるかどうかを判断する方法と、NSWindowがフルスクリーンモードに入るのを有効または無効にする方法を理解するのに多くの時間を費やしました。これは、ビューを別のビューにアニメーション化したり、フルスクリーンモードに出入りするときに混乱するようなことをしているときに便利です。ウィンドウのサイズが変更されないようにロックするようなものです。
これに対する答えは以下に掲載されています。
ここに興味がある人のために、分類またはそのまま使用できるいくつかの方法があります。私はこれを行う方法を探すのに少し時間を費やし、それが他の誰かを助けることができると思いました:
これは、フルスクリーンモードであるかどうかを示します。
@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
あなたの問題を解決するのに役立ちます。
NSWindowDelegate の 2 つのイベントは次のとおりです。
– windowDidEnterFullScreen:
– windowDidExitFullScreen: