簡體   English   中英

Swift 3 / macOS:在某些屏幕上打開窗口

[英]Swift 3/macOS: Open window on certain screen

初學者問題:

我正在使用當前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屬性,該屬性告訴您全局框架矩形。

然后,您可以將窗口原點設置為適合您想要的任何屏幕的幀矩形坐標。 在這里這里都可以看到Objective-C的答案。

這確實意味着您必須編寫一些代碼來指定首選窗口。 在我自己的應用程序中,我為每個屏幕獲取全局框架矩形,然后將其按比例縮小到NSView中,以顯示類似於“系統偏好設置”中“監視器”窗格的內容:

設置視頻首選項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM