如何让我的 NSWindow 出现在每个应用程序和菜单栏的前面?我也不想在我的窗口上有一个标题栏。只是一个没有停靠菜单栏的全屏应用程序,而不是苹果的全屏模式。我可以让我的窗口高于所有其他应用程序并像这样停靠:
[window setLevel:kCGPopUpMenuWindowLevel];
但它不包括mac菜单栏。
如何让我的 NSWindow 出现在每个应用程序和菜单栏的前面?我也不想在我的窗口上有一个标题栏。只是一个没有停靠菜单栏的全屏应用程序,而不是苹果的全屏模式。我可以让我的窗口高于所有其他应用程序并像这样停靠:
[window setLevel:kCGPopUpMenuWindowLevel];
但它不包括mac菜单栏。
You can't move a default window higher that the menu bar, because it's constrained. You have to subclass NSWindow and override constrainFrameRect:toScreen:
- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen {
return frameRect;
}
将窗口级别设置为NSMainMenuWindowLevel + 2
。
如果使用NSMainMenuWindowLevel + 1
顶部菜单栏,有时仍会出现但非常不可预测。NSMainMenuWindowLevel + 2
强制它停留在菜单栏上方并永久保持焦点。
[window setLevel:NSMainMenuWindowLevel + 2];
在斯威夫特 3 中:
window.level = Int(CGWindowLevelForKey(.mainMenuWindow)) + 2