使用Cocoa在辅助监视器上全屏显示os x窗口

时间:2008-12-30 19:36:45

标签: cocoa fullscreen

我正在开发一个Cocoa Mac应用程序,我需要在辅助显示器上全屏显示窗口/视图。我知道如何创建一个可以拖到辅助监视器上的窗口,但我想以编程方式创建窗口并在外部监视器上全屏显示。谢谢你的帮助。

3 个答案:

答案 0 :(得分:12)

首先,通过迭代[NSScreen屏幕]确定要使用的屏幕。

创建一个全屏窗口:

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()。

答案 1 :(得分:4)

您可以调用enterFullScreenMode:withOptions:的{​​{1}}方法来实现所需的行为。

请参阅Apple's documentation

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

您可以使用NSView获取可用屏幕列表。有关详细信息,请参阅here

答案 2 :(得分:0)

全屏幕窗口动画不稳定,在我看来看起来并不好看。全屏视图更加流畅。

试试这个:

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

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

您可以将其连接到“窗口”菜单中的全屏菜单项(将其插入笔尖后),但一定要将菜单项触发的操作更改为toggleMyViewFullScreen :.或者您可以通过编程方式或在应用程序加载时调用toggleMyViewFullScreen。