NSWindow在每个应用程序前面和菜单栏Objective-c Mac前面

时间:2012-11-04 18:43:36

标签: objective-c macos window nswindow menubar

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

[window setLevel:kCGPopUpMenuWindowLevel];

但它不包括mac菜单栏。

3 个答案:

答案 0 :(得分:5)

您无法将默认窗口移动到菜单栏的上方,因为它受到约束。您必须子类化NSWindow并覆盖constrainFrameRect:toScreen:

- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen {
    return frameRect;
}

答案 1 :(得分:1)

将窗口级别设置为NSMainMenuWindowLevel + 2

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

[window setLevel:NSMainMenuWindowLevel + 2];

答案 2 :(得分:1)

在Swift 3中:

window.level = Int(CGWindowLevelForKey(.mainMenuWindow)) + 2