Swift 3/macOS: 在特定屏幕上打开 window

Swift 3/macOS: Open window on certain screen

初学者问题:

我正在使用当前 Xcode 8.3.3 和 Swift3 开发 macOS 应用程序。我正在使用 MASShortcut 通过启动时隐藏的快捷方式打开 window。

我在快捷方式事件上使用了以下代码:

NSApplication.shared().windows.last!.makeKeyAndOrderFront(nil)
NSApplication.shared().activate(ignoringOtherApps: true)

对于多显示器设置(我的 MacBook 连接了两个外部显示器),我想指定 window 弹出的屏幕。我知道有 NSScreen.screens() 返回所有可用屏幕。但是如何使用它让我的 window 在屏幕 1/2/3 上弹出?

非常感谢!

编辑:通过@michael-doltermann 的回答解决:

我可以遍历 NSScreen.screens() 并访问例如 midX/midY 坐标来创建一个 NSPoint 实例来替换我的 window.

var pos = NSPoint()
pos.x = NSScreen.screens()![myIndex].visibleFrame.midX)
pos.y = NSScreen.screens()![myIndex].visibleFrame.midY)
self.window?.setFrameOrigin(pos)

NSScreen.screens() 中的每个屏幕都有一个 visibleFrame 属性 告诉您全局框架矩形。

然后您可以将 window 原点设置为适合您想要的任何屏幕的框架矩形坐标。 Objective-C答案可见here and here.

这确实意味着您必须编写一些代码来指定首选 window。在我自己的应用程序中,我为每个屏幕获取全局框架矩形,然后将它们缩小到 NSView 中以显示类似于系统偏好设置中的监视器窗格的内容: