如何在OSX中跨多个屏幕运行全屏

时间:2014-02-26 11:34:31

标签: macos cocoa nswindow nsapplication

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

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

这种方法似乎存在一些问题。一些OSX事件似乎迫使菜单栏进入视图并永久地移动窗口。

OSX Mavericks现在是否有更好的方法来更新全屏支持?我可以在真正的全屏模式下打开NSApplication并为每个NSScreen强制使用单独的NSWindow吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

您可以在每个屏幕上实例化一个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];
相关问题