Mac OS X, сделать окно перейти через строку меню - PullRequest
6 голосов
/ 21 июля 2011

Можно ли сделать окно для перехода по строке меню, не заходя в полноэкранный режим?

Заранее спасибо!

Ответы [ 3 ]

15 голосов
/ 21 июля 2011

Да, тривиально:

window.level = NSMainMenuWindowLevel + 1;

(Ссылка: Рисование в полноэкранном режиме , Руководство по программированию OpenGL для Mac OS X .)

Себастьянмарков прав, потому что это ужасное поведение для обычного окна документа, но есть несколько типов окон, для которых это нормально: курсоры, подсказки и специальные утилиты, такие как Xscope.

3 голосов
/ 29 августа 2013

Мне понравился ответ Дженса Айтона, но вместо того, чтобы выбрать произвольное число, подобное этому, я думаю, что было бы предпочтительнее использовать одну из определенных констант.

Лично я использовал NSPopUpMenuWindowLevel как в:

self.window.level = NSPopUpMenuWindowLevel;

Другие константы, которые вы могли бы предпочесть, начиная с моего размещения этого ответа, включают:

  • NSNormalWindowLevel
  • NSFloatingWindowLevel
  • NSSubmenuWindowLevel
  • NSNormalWindowLevel
  • NSMainMenuWindowLevel
  • NSStatusWindowLevel
  • NSModalPaneWindowLevel
  • NSPopUpMenuWindowLevel
  • NSScreenSaverWindowLevel

Вот ссылка (Apple имеет тенденцию менять способы организации своих документов и ломать эти ссылки на протяжении многих лет, но API не сильно меняются,вот почему я включил этот список выше. Я сомневаюсь, что эта ссылка будет работать через 3 года или около того, но эти константы, вероятно, не сильно изменятся в течение следующих 20 лет.)

https://developer.apple.com/library/mac/documentation/cocoa/reference/applicationkit/classes/NSWindow_Class/Reference/Reference.html#//apple_ref/doc/constant_group/Window_Levels

2 голосов
/ 21 июля 2011

Я не верю, что вы можете перейти в верхнюю часть строки меню, но вы можете настроить автоматическое скрытие строки меню, когда ваше приложение является передним, вызвав

[[NSApplication sharedApplication] setPresentationOptions: NSApplicationPresentationAutoHideMenuBar];

, что должно позволитьВы используете пространство, обычно используемое для строки меню в вашем приложении.

...