Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 3/macOS:打开特定屏幕上的窗口_Swift_Macos_Window_Screen - Fatal编程技术网

Swift 3/macOS:打开特定屏幕上的窗口

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附带了两个外部显示器),我想指定窗口

初学者问题:

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

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

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)