12

我正在开发一个 Cocoa Mac 应用程序,我需要在辅助监视器上全屏显示窗口/视图。

我知道如何创建一个可以拖到辅助监视器上的窗口,但我想以编程方式创建窗口并使其在外部监视器上全屏显示。

4

3 回答 3

12

首先,通过迭代来确定要使用的屏幕[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()

于 2008-12-30T20:29:31.877 回答
4

您可以调用 的enterFullScreenMode:withOptions:方法NSView来实现所需的行为。

请参阅Apple 的文档

阅读此处此处了解可提供给此方法的选项。

您可以使用[NSScreen screens]获取可用屏幕的列表。有关详细信息,请参见此处

于 2008-12-30T20:36:59.320 回答
0

全屏窗口动画断断续续,在我看来并不好看。全屏视图更加流畅。

试试这个:

- (void)toggleMyViewFullScreen:(id)sender
{
    if (myView.inFullScreenMode) {
      [myView exitFullScreenModeWithOptions:nil];
    } else {
      NSApplicationPresentationOptions options =
          NSApplicationPresentationHideDock |       
          NSApplicationPresentationHideMenuBar;

      [myView enterFullScreenMode:[NSScreen mainScreen] withOptions:@{
             NSFullScreenModeApplicationPresentationOptions : @(options) }];
                                                                                 }];
    }
}

您可以将其连接到 Window 菜单中的全屏菜单项(在将其插入 nib 之后),但请务必将菜单项触发的操作更改为您的 toggleMyViewFullScreen: 。或者您可以通过编程方式或在您的应用加载时调用 toggleMyViewFullScreen。

于 2015-01-22T09:56:00.813 回答