Cocoa - 将 window 调整为全屏。双显示

Cocoa - resize window to full screen. Dual display

我正在尝试调整大小 window 以显示两个显示器。

在 yosemite 很大程度上取决于 [NSScreen screensHaveSeparateSpaces] - "Displays have separate Spaces" 设置。

如果 screensHaveSeparateSpaces 设置为 NO,我可以将 NSWindow 调整到所有屏幕,并设置 [window setLevel:CGShieldingWindowLevel()],这样就可以了。

但是如果screensHaveSeparateSpaces设置为YES,我只看到window的一半。我正在尝试:

NSDictionary *opts = [NSDictionary dictionaryWithObjectsAndKeys:
      [NSNumber numberWithBool:YES], NSFullScreenModeAllScreens,
       nil];

NSView *view = [window contentView];
[view enterFullScreenMode:[NSScreen mainScreen] withOptions:opts];

NSRect frame = [view.window frame];
frame.size.width *= 2;
[view.window setContentSize:frame.size];

NSView 调整到所有屏幕这是真的,但是 NSView 填满了我的左侧主显示器 - 辅助(右侧)显示器保持黑色。

如果 screensHaveSeparateSpaces 返回 YES,我如何将 NSView 调整为全屏(双显示)?

你不能。一个 window 只存在于一个 space 中。如果每个屏幕都有一个单独的 space,那么您不能在两个屏幕上都有一个 window。最好的办法是尝试通过两个 windows,每个 space 来伪造它,但我什至不确定这是否可能。假设您甚至可以在多个 space 中拥有一个带有 windows 的应用程序,那么尝试让两个 windows 彼此同步并不是一件容易的事。