我需要在OS X程序中制作一个“全屏覆盖窗口”。准确地说,该窗口必须始终位于所有其他窗口的顶部,包括非最大化窗口空间中的菜单栏顶部以及其自己空间中的最大化窗口顶部,并且在Exposé期间始终处于顶部。它不能参与“更改空间”动画;即其位置必须始终相对于物理屏幕固定。(窗口将是半透明的并且会忽略鼠标事件,但我已经知道如何做到这一点。)
如何实现这种“覆盖窗口”行为?我已经有了以下进展:
- 我应该将
我不知道的是如何在切换空间时保持此行为。我认为我应该设置
如何实现这种“覆盖窗口”行为?我已经有了以下进展:
- 我应该将
window.level
设置为CGWindowLevelKey(kCGMaximumWindowLevelKey)
,以便它始终位于同一空间的其他窗口的顶部。
- 我应该设置NSWindowCollectionBehaviorStationary
,以便该窗口在Exposé期间保持不动。我不知道的是如何在切换空间时保持此行为。我认为我应该设置
NSWindowCollectionBehaviorCanJoinAllSpaces
,但它的行为有两个问题:
- 窗口不会出现在其他全屏窗口的上方。
- 窗口在每个空间中都是重复的,而不是停留在所有空间的顶部。这很重要,因为涉及到空间切换动画。
我听说使用NSPanel
可能有帮助, 但我也无法使其起作用。
简而言之,在OS X中,窗口能否出现在全屏窗口的上方?您能提供一个简短完整的示例吗?
NSPanel
。等我有时间的时候,我会尝试用一些示例代码来回答这个问题。 - jameshfisher