2017-06-29 6 views
0

初心者質問:Swift 3/macOS:特定の画面でウィンドウを開く

私は現在のXcode 8.3.3とSwift3でmacOSアプリケーションを開発しています。私は起動時に隠されたショートカットでウィンドウを開くためにMASShortcutを使用しています。

私はショートカットイベントに次のコードを使用します。

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

複数のモニタのセットアップ(私は私のMacBookに取り付けられた2台の外部ディスプレイを持っている)、私は窓がポップアップ画面を指定するため。 NSScreen.screens()が利用可能なすべての画面を返すことを知っています。しかし、私は画面を1/2/3でポップアップさせるためにどのように使っていますか?

ありがとうございます! @マイケル・doltermannの答えを解決:

編集例えばMIDX/midYはcoordsの

私はNSScreen.screensを反復処理することができます()とアクセスが私の窓を交換するNSPointインスタンスを作成します。 NSScreen.screens()から

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

答えて

1

各画面は、あなたのグローバルフレーム矩形を伝えるvisibleFrame性質を持っています。

次に、ウィンドウの原点を、任意のスクリーンのフレームのrect座標に収まるように設定できます。 Objective-Cの回答はherehereです。

これは、優先ウィンドウを指定するコードを記述する必要があることを意味します。自分のアプリでは、私は、各画面のグローバルフレーム矩形をとり、その後、モニターはシステム環境設定からペインのようなものを表示するには、NSViewのに道ダウン、それらをスケール:

Set Video Preferences

+0

ありがとうございました! 私はそれを持っています。 私は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) – Kim