【问题标题】:NSWindow in front of every app and in front of the menu bar Objective-c MacNSWindow 在每个应用程序的前面和菜单栏的前面 Objective-c Mac
【发布时间】:2012-11-04 18:43:35
【问题描述】:

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

[window setLevel:kCGPopUpMenuWindowLevel];

但它没有覆盖 mac 菜单栏。

【问题讨论】:

  • 你能把它移到菜单栏后面吗?或者你不能把它移到高于菜单栏的位置吗?
  • @DrummerB 我无法将它移到菜单栏前面的菜单栏后面。菜单栏就像一个障碍。

标签: objective-c macos window nswindow menubar


【解决方案1】:

您不能将默认窗口移动到高于菜单栏的位置,因为它受到限制。您必须继承 NSWindow 并覆盖 constrainFrameRect:toScreen:

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

【讨论】:

【解决方案2】:

将窗口级别设置为NSMainMenuWindowLevel + 2

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

[window setLevel:NSMainMenuWindowLevel + 2];

【讨论】:

    【解决方案3】:

    在 Swift 3 中:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多