Swift 3/macOS:打开特定屏幕上的窗口
初学者问题: 我正在使用当前的Xcode 8.3.3和Swift3开发macOS应用程序。我使用MASShortcut通过启动时隐藏的快捷方式打开窗口 我在快捷方式事件上使用以下代码:Swift 3/macOS:打开特定屏幕上的窗口,swift,macos,window,screen,Swift,Macos,Window,Screen,初学者问题: 我正在使用当前的Xcode 8.3.3和Swift3开发macOS应用程序。我使用MASShortcut通过启动时隐藏的快捷方式打开窗口 我在快捷方式事件上使用以下代码: NSApplication.shared().windows.last!.makeKeyAndOrderFront(nil) NSApplication.shared().activate(ignoringOtherApps: true) 对于多显示器设置(我的MacBook附带了两个外部显示器),我想指定窗口
NSApplication.shared().windows.last!.makeKeyAndOrderFront(nil)
NSApplication.shared().activate(ignoringOtherApps: true)
对于多显示器设置(我的MacBook附带了两个外部显示器),我想指定窗口弹出的屏幕。我知道有NSScreen.screens()返回所有可用屏幕。但是我如何使用它让我的窗口在1/2/3屏幕上弹出呢
非常感谢
编辑:用@michael doltermann的答案解决:
我可以迭代NSScreen.screens()并访问例如midX/midY坐标,以创建一个NSPoint实例来替换我的窗口
var pos = NSPoint()
pos.x = NSScreen.screens()![myIndex].visibleFrame.midX)
pos.y = NSScreen.screens()![myIndex].visibleFrame.midY)
self.window?.setFrameOrigin(pos)
NSScreen.screens()
中的每个屏幕都有一个visibleFrame
属性,告诉您全局框架矩形
然后,您可以将窗口原点设置为适合您想要的任何屏幕的frame rect坐标。客观C答案可以看到,也可以看到
这意味着您必须编写一些代码来指定首选窗口。在我自己的应用程序中,我为每个屏幕选取全局帧矩形,然后将其向下缩放到NSView中,以显示类似于“系统首选项”中“监视器”窗格的内容:
谢谢!我得到了它。我可以迭代NSScreen.screens()并访问例如midX/midY坐标,以创建一个NSPoint实例来替换我的窗口。var pos=NSPoint()pos.x=NSScreen.screens()![myIndex].visibleFrame.midX)pos.y=NSScreen.screens()![myIndex].visibleFrame.midY)self.window?.setFrameOrigin(pos)