4

如何让我的 NSWindow 出现在每个应用程序和菜单栏的前面?我也不想在我的窗口上有一个标题栏。只是一个没有停靠菜单栏的全屏应用程序,而不是苹果的全屏模式。我可以让我的窗口高于所有其他应用程序并像这样停靠:

[window setLevel:kCGPopUpMenuWindowLevel];

但它不包括mac菜单栏。

4

3 回答 3

7

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;
}
于 2012-11-04T18:49:04.057 回答
2

将窗口级别设置为NSMainMenuWindowLevel + 2

如果使用NSMainMenuWindowLevel + 1顶部菜单栏,有时仍会出现但非常不可预测。NSMainMenuWindowLevel + 2强制它停留在菜单栏上方并永久保持焦点。

[window setLevel:NSMainMenuWindowLevel + 2];
于 2013-03-03T00:31:36.710 回答
2

在斯威夫特 3 中:

window.level = Int(CGWindowLevelForKey(.mainMenuWindow)) + 2
于 2016-10-11T15:11:02.067 回答