如何让我的 NSWindow 出现在每个应用程序和菜单栏的前面?我也不希望窗口上有标题栏。只是一个没有扩展坞菜单栏的全屏应用程序,并且不在苹果的全屏模式下。 我可以让我的窗口位于所有其他应用程序之上并像这样停靠:
[window setLevel:kCGPopUpMenuWindowLevel];
但它没有覆盖 mac 菜单栏。
您无法将默认窗口移至高于菜单栏的位置,因为它受到限制。你必须继承 NSWindow 并覆盖
constrainFrameRect:toScreen:
- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen {
return frameRect;
}
将窗位设置为
NSMainMenuWindowLevel + 2
。
如果您使用
NSMainMenuWindowLevel + 1
,顶部菜单栏有时仍会出现,但非常不可预测。 NSMainMenuWindowLevel + 2
强制其停留在菜单栏上方并永久保持焦点。
[window setLevel:NSMainMenuWindowLevel + 2];
在 Swift 3 中:
window.level = Int(CGWindowLevelForKey(.mainMenuWindow)) + 2
在 Swift 5 中:
window.level = .screenSaver