2016-03-24 58 views
0

我試圖添加一個小窗口,它提供了從系統中任何位置到主應用程序的「快速輸入」。允許NSWindow(NSPanel)在全屏應用程序上方浮動

用戶可以打一個熱鍵,彈出窗口,並漂浮在所有其他窗口之上。

大部分情況下,這並不是什麼大問題。我可以配置一個NSWindow是:

level = Int(CGWindowLevelKey.TornOffMenuWindowLevelKey.rawValue) 
collectionBehavior = .CanJoinAllSpaces 

我還可以使它與NSNonactivatingPanelMask選項設置NSPanel。

唯一的問題是:如何讓窗口在屏幕上彈出,即使用戶位於包含全屏應用程序的空間上?

我知道這是可能的,當應用程序是LSUIElement=true(一個應用程序沒有在Dock中的位置),但我的不是。

回答

1

好吧,我有正確的想法,棘手的部分是所有的選項如何相互作用。以下是工作原理:

  • NSPanel,不是NSWindow
  • 式面膜:NSBorderlessWindowMask | NSNonactivatingPanelMask

而這些屬性:

level = Int(CGWindowLevelKey.MainMenuWindowLevelKey.rawValue) 
collectionBehavior = [.CanJoinAllSpaces, .FullScreenAuxiliary] 
0

雨燕3.0版本的your self-answer

window.level = Int(CGWindowLevelForKey(.mainMenuWindow)) 
window.collectionBehavior = [.canJoinAllSpaces, .fullScreenAuxiliary] 
+0

現在不工作 –

0

而斯威夫特4.0的翻譯是這樣的..我仍然在測試這個,但它似乎工作。

self.view.window?.level = NSWindow.Level(rawValue: Int(CGWindowLevelForKey(.mainMenuWindow))) 
self.view.window?.collectionBehavior = [.canJoinAllSpaces, .fullScreenAuxiliary]