我可以更改NSScreen可见帧吗?

时间:2011-08-25 18:27:45

标签: cocoa screen macos

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

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

2 个答案:

答案 0 :(得分:4)

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

即使这样,它可能也不会做你想要的,因为这种方法可能不是Apple用来确定windows的“安全区域”的方法,而且几乎肯定不适用于Carbon应用程序。

您对窗口级别的任何操作都不会改变这一点。

可以做的是使用辅助功能框架重新定位窗口,如果您检测到它们的帧已更改,以便它们与工具栏窗口重叠。不幸的是,我认为您可能需要使用轮询。

答案 1 :(得分:1)

尝试将窗口级别设置为NSDockWindowLevel

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

相关问题