我能改变NSScreen可视框架吗?



我尝试创建一个停靠在OS X菜单栏下方屏幕顶部的工具栏。

我希望没有其他应用程序能够在最大化时重叠我的应用程序。我可以使用NSScreen的visibleframe方法获得可见框架的尺寸,但是我可以调整visibleframe来忽略我的应用程序的大小和位置吗?

简单的答案是不,你不能。我认为改变屏幕的visibleRect的唯一方法是将代码注入AppKit并混合方法。

即使这样,它也可能不会做你想要的,因为这种方法可能不是苹果用来确定窗口"安全区域"的方法,而且几乎肯定不会与Carbon应用程序一起工作。

无论你对窗口级别做什么都不会改变这个。

可以做的是使用可访问性框架来重新定位窗口,如果你检测到他们的框架已经改变,使他们重叠你的工具栏窗口。不幸的是,我认为您可能需要使用轮询。

尝试将窗口级别设置为NSDockWindowLevel

这可能不起作用,这取决于系统是减去该级别上的所有窗口还是只减去Dock的窗口,但值得一试。

最新更新