【问题标题】:How Do I Run Full-Screen Across Multiple Screens in OSX如何在 OSX 中跨多个屏幕运行全屏
【发布时间】:2014-02-26 11:34:31
【问题描述】:

我正在制作一个显示视频和图像幻灯片的 Cocoa 应用程序。如果连接了多个屏幕(例如连接到 Mac Mini),我希望在每个屏幕上显示不同的内容。每个 NSWindow 在每个 NSScreen 上都应该是全屏的。

在 OSX 10.8 上开发时,我使用 NSBorderlessWindowMask 将每个 NSWindow 框架设置为 NSScreen 框架。我没有在 NSApplication 上明确使用 NSApplicationPresentationFullScreen,我使用了 NSApplicationPresentationHideDock 和 NSApplicationPresentationAutoHideMenuBar。

这种方法似乎存在一些问题。一些 OSX 事件似乎会强制菜单栏进入视图并永久向下移动窗口。

既然 OSX Mavericks 更新了全屏支持,有没有更好的方法来解决这个问题?我可以在真正的全屏模式下打开一个 NSApplication 并为每个 NSScreen 强制一个单独的 NSWindow 吗?

谢谢。

【问题讨论】:

    标签: macos cocoa nswindow nsapplication


    【解决方案1】:

    您可以在每个屏幕上实例化一个 NSWindow 并将它们切换到全屏:

    [self.windowA setFrame:[[[NSScreen screens] firstObject] visibleFrame] display:NO];
    [self.windowB setFrame:[[[NSScreen screens] lastObject] visibleFrame] display:NO];
    [self.windowA toggleFullScreen:nil];
    [self.windowB toggleFullScreen:nil];
    

    【讨论】:

    • 上面的代码不会 - 但是应该很容易修改它以支持> 2个窗口。
    • 谢谢。第一步是我目前正在做的事情。不过,我没有在窗口上调用 toggleFullScreen。我会看看这是否会改变行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 2022-10-19
    • 1970-01-01
    相关资源
    最近更新 更多