苹果菜单栏的高度

Sam*_*uel 9 macos osx-leopard menubar

我只是想知道如何获得苹果菜单栏的高度,以像素为单位(总是在顶部)

(我的屏幕尺寸是1200 x 800)我想知道除了菜单栏会是什么.

Ros*_*oss 18

以编程方式(因为这是SO,我正在寻找一个程序性的答案,谷歌发送给我这里)你可以通过使用:

 CGFloat menuBarHeight = [[[NSApplication sharedApplication] mainMenu] menuBarHeight];
Run Code Online (Sandbox Code Playgroud)

或作为平面设计师,我知道会说:0.8厘米;)


小智 12

如果您需要在运行时知道,请使用-[NSMenu menuBarHeight].


tms*_*lnz 10

我会发现非编程的6纳秒方式:

  • 第1步:⌘+⇧+ 4
  • 第2步:按␣(空格),光标将从十字准线变为选择整个窗口的东西.
  • 第3步:点击
  • 第4步:〜/桌面/屏幕截图2001 - ## - ##.png/jpg
  • 第5步:+ i

信息面板将告诉您高度(和宽度).

(sǝıxıdoʍʇ-ʎʇuǝʍʇ:ɹǝʍsuɐ)

  • 快照 -> 空间 -> 选择窗口的东西真棒!:p (3认同)

mil*_*los 8

根据@Ross 的回答:

NSApplication.sharedApplication().mainMenu?.menuBarHeight
Run Code Online (Sandbox Code Playgroud)

不幸的是,这将nil在应用程序完成启动之前返回(因为mainMenu将是nil)。如果您在此之前需要这个值(并且您不想为未来的操作系统版本猜测它),您可以像这样计算它:

if let screen = NSScreen.mainScreen() {
    let menuBarHeight = screen.frame.height - screen.visibleFrame.height - screen.visibleFrame.origin.y - 1
}
Run Code Online (Sandbox Code Playgroud)

只有在顶部固定了一些额外的屏幕家具(例如 Dock)时,这个数字才会正确,这似乎极不可能。

更新:支持多个显示器(主要和次要):

let appleMenuBarHeight = screen.frame.height - screen.visibleFrame.height - (screen.visibleFrame.origin.y - screen.frame.origin.y) - 1
Run Code Online (Sandbox Code Playgroud)