Cocoaを使用してセカンダリモニターにOS Xウィンドウを全画面表示する
-
03-07-2019 - |
質問
セカンダリモニター、フルスクリーンでウィンドウ/ビューを表示する必要があるCocoa Macアプリで作業しています。セカンダリモニターにドラッグできるウィンドウを作成する方法は知っていますが、プログラムでウィンドウを作成し、外部モニターでフルスクリーンにしたいと思っていました。助けてくれてありがとう。
解決
まず、[NSScreen screens]を繰り返して、使用する画面を決定します。
フルスクリーンウィンドウを作成するには:
NSScreen *screen = /* from [NSScreen screens] */
NSRect screenRect = [screen frame];
NSWindow *window = [[NSWindow alloc] initWithContentRect:screenRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO
screen:screen];
[window setLevel: CGShieldingWindowLevel()];
同様にCGDisplayCapture()をGoogleで検索することもできます。
他のヒント
NSView の enterFullScreenMode:withOptions:
メソッドを呼び出して、目的の動作を実現できます。
[NSScreen screens]
を使用して、使用可能な画面のリストを取得できます。 詳細はこちら。
全画面ウィンドウのアニメーションは途切れがちで、私の意見では見栄えがよくありません。全画面表示がよりスムーズになりました。
これを試してください:
- (void)toggleMyViewFullScreen:(id)sender
{
if (myView.inFullScreenMode) {
[myView exitFullScreenModeWithOptions:nil];
} else {
NSApplicationPresentationOptions options =
NSApplicationPresentationHideDock |
NSApplicationPresentationHideMenuBar;
[myView enterFullScreenMode:[NSScreen mainScreen] withOptions:@{
NSFullScreenModeApplicationPresentationOptions : @(options) }];
}];
}
}
これを[ウィンドウ]メニューのフルスクリーンメニュー項目に(ペン先に挿入した後)接続できますが、メニュー項目が起動するアクションを必ずtoggleMyViewFullScreen:に変更してください。または、プログラムで、またはアプリの読み込み時に、toggleMyViewFullScreenを呼び出すことができます。
所属していません StackOverflow