【问题标题】:Cocoa - resize window to full screen. Dual displayCocoa - 将窗口大小调整为全屏。双显示
【发布时间】:2015-01-30 11:55:23
【问题描述】:

我正在尝试调整两个显示的窗口大小。

在优胜美地很大程度上取决于[NSScreen screensHaveSeparateSpaces] - “显示器有单独的空间”设置。

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

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

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 调整为全屏(双显示)?

【问题讨论】:

    标签: objective-c cocoa fullscreen osx-yosemite


    【解决方案1】:

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

    【讨论】:

    • 那为什么 NSView 调整到所有屏幕并只绘制一个显示?这很奇怪
    • NSViews 是“抽象”的东西。您可以根据需要将 NSView 设置为大或小。它可以在窗口的视图层次结构中,也可以不在。它只是一个数据结构。
    猜你喜欢
    • 2015-07-17
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    相关资源
    最近更新 更多