Cocoaを使用してセカンダリモニターにOS Xウィンドウを全画面表示する

StackOverflow https://stackoverflow.com/questions/401240

  •  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:メソッドを呼び出して、目的の動作を実現できます。

Appleのドキュメント

こちらおよびこちらをご覧ください。

[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を呼び出すことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top