好的,我的想法是正确的,麻烦的部分在于所有选项之间的交互方式。以下是有效的:
- NSPanel而不是NSWindow
- 样式掩码:
[.borderless, .nonactivatingPanel]
还有这些属性:
panel.level = .mainMenu
panel.collectionBehavior = [.canJoinAllSpaces, .fullScreenAuxiliary]
Swift 4.2 代码
使用这些设置创建并显示一个面板。然后,您可以将该面板拖到全屏应用程序(双监视器设置)上。
let panel2 = NSPanel(contentRect: NSRect(x: 0, y: 0, width: 200, height: 200), styleMask: [.titled, .nonactivatingPanel], backing: .buffered, defer: true)
panel2.level = .mainMenu
panel2.collectionBehavior = [.canJoinAllSpaces, .fullScreenAuxiliary]
panel2.orderFrontRegardless()
![浮动的NSPanel位于全屏macOS应用程序上方](https://istack.dev59.com/yX7Vh.webp)
切换到无边框模式将防止用户移动您的窗口。
let panel2 = NSPanel(contentRect: NSRect(x: 0, y: 0, width: 200, height: 200), styleMask: [.borderless, .nonactivatingPanel], backing: .buffered, defer: true)
panel2.level = .mainMenu
panel2.collectionBehavior = [.canJoinAllSpaces, .fullScreenAuxiliary]
panel2.orderFrontRegardless()