Высота яблочного менубара - PullRequest
8 голосов
/ 19 мая 2010

Мне было просто интересно, как узнать высоту яблочного меню, в пикселях (всегда сверху)

(Мой размер экрана 1200 x 800) Мне было интересно, что это будет, за исключением меню.

Ответы [ 4 ]

18 голосов
/ 12 февраля 2011

Программно (так как это ТАК, я искал программный ответ и Google отправил меня сюда), вы можете получить это, используя:

 CGFloat menuBarHeight = [[[NSApplication sharedApplication] mainMenu] menuBarHeight];

или как графический дизайнер, я знаю, скажу: 0,8 см;)

12 голосов
/ 04 июня 2010

А если вам нужно знать во время выполнения, используйте -[NSMenu menuBarHeight].

10 голосов
/ 12 февраля 2011

Незапрограммированный 6-наносекундный путь, который я бы выяснил:

  • Шаг 1: ⌘ + ⇧ + 4
  • Шаг 2: нажмите ␣ (пробел), и ваш курсор превратится из перекрестия в нечто, выбирающее целые окна.
  • Шаг 3: НАЖМИТЕ
  • Шаг 4: ~ / Рабочий стол / Снимок экрана 2001 - ## - ##. Png / jpg
  • Шаг 5:  + i

Информационная панель покажет вам высоту (и ширину).

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

3 голосов
/ 18 мая 2015

Согласно ответу @ Росса:

NSApplication.sharedApplication().mainMenu?.menuBarHeight

К сожалению, это вернет nil до того, как приложение завершит запуск (потому что mainMenu будет nil). Если вам нужно это значение раньше, чем это (и вы не хотите угадывать его для будущих выпусков ОС), вы можете рассчитать его следующим образом:

if let screen = NSScreen.mainScreen() {
    let menuBarHeight = screen.frame.height - screen.visibleFrame.height - screen.visibleFrame.origin.y - 1
}

Это число не будет правильным, только если есть некоторая дополнительная экранная мебель (например, док-станция), закрепленная сверху, что представляется крайне маловероятным.

Обновление: Для поддержки нескольких дисплеев (основного и дополнительного):

let appleMenuBarHeight = screen.frame.height - screen.visibleFrame.height - (screen.visibleFrame.origin.y - screen.frame.origin.y) - 1
...