swift – 在所有空间(包括其他全屏应用程序)上可见的窗口

swift – 在所有空间(包括其他全屏应用程序)上可见的窗口,第1张

概述我正在尝试在所有空间上显示一个窗口(NSWindow),包括其他全屏应用程序窗口.我一直在尝试设置更高的窗口级别以及在检查器中使用曝光和空间设置.我在这里找到了一些解决方案,但它们不起作用.至少在El Capitan. 以下是要测试的示例代码: let window = NSWindow(contentRect: NSRect(x: 300, y: 300, width: 200, height: 我正在尝试在所有空间上显示一个窗口(NSWindow),包括其他全屏应用程序窗口.我一直在尝试设置更高的窗口级别以及在检查器中使用曝光和空间设置.我在这里找到了一些解决方案,但它们不起作用.至少在El CAPItan.

以下是要测试的示例代码:

let window = NSWindow(contentRect: NSRect(x: 300,y: 300,wIDth: 200,height: 200),styleMask: NSborderlessWindowMask,backing: .Buffered,`defer`: true)window.backgroundcolor = NScolor.greencolor()window.level = Int(CGWindowLevelForKey(.floatingWindowLevelKey))window.collectionBehavior = [.CanJoinAllSpaces,.TransIEnt]window.makeKeyAndOrderFront(nil)

现在它在所有桌面空间上显示窗口,但它不会在其他应用程序的全屏窗口上显示.

解决方法 如果您希望窗口在其他全屏窗口(空格)的顶部可见,则应创建代理(附件)应用程序. @H_301_21@您可以通过将应用程序的Info.pList中的lsuielement键设置为1来执行此 *** 作(是)

如果您仍需要常规应用程序,则可以执行以下 *** 作:

>在主应用程序包中创建一个单独的代理(帮助程序)应用程序,它将显示您的窗口. (关于如何创建这样的应用程序,有很多很好的例子)@H_301_21@>使用NSApplicationActivationPolicy进行游戏.您可以尝试在运行时更改应用程序的激活策略.@H_301_21@斯威夫特3:

> NSApp.setActivationPolicy(.accessory)切换到代理(附件)@H_301_21@> NSApp.setActivationPolicy(.regular)切换到普通应用程序

请记住.accessory策略隐藏了Dock中的图标,您仍然需要已经拥有的代码:

window.collectionBehavior = .canJoinAllSpaceswindow.level = Int(CGWindowLevelForKey(.floatingWindow))

总结

以上是内存溢出为你收集整理的swift – 在所有空间(包括其他全屏应用程序)上可见的窗口全部内容,希望文章能够帮你解决swift – 在所有空间(包括其他全屏应用程序)上可见的窗口所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1006080.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存