Как программно скрыть строку меню в приложении какао? Я хотел бы в полной мере использовать площадь экрана.
Как скрыть строку меню в приложении Cocoa?
Ответы (2)
Я знаю два хороших способа сделать это.
1 В Cocoa вы можете вызвать метод класса NSMenu setMenuBarVisible:
, чтобы отобразить или скрыть строку меню.
На момент написания этой статьи документация для класса NSMenu не сообщает вам следующую дополнительную информацию.
Строка меню будет скрыта только для приложения, вызывающего этот метод. В то же время Dock будет также скрыт.
(Это верно по крайней мере для 10.9, и я не тестировал другие версии.)
Это полезно, когда вы хотите использовать приложение в полноэкранном режиме, когда у вас есть окно-обложка, окно без полей размером с экран. Приятная особенность этого (в отличие от игры с настройками LSUIElement) заключается в том, что ваше приложение может продолжать циклически переключаться между приложениями, а также отображаться в доке, когда другие приложения активны. Это позволяет пользователям по-прежнему активировать полноэкранное приложение с помощью Dock или переключателя приложений. Это означает, что вы по-прежнему можете использовать меню Dock вашего приложения для доступа к окну настроек вашего приложения или другим функциям. Это невероятно удобно, если ваше приложение действительно является полноэкранным окном, которое работает на уровне окна выше, чем другие приложения, но вы все еще хотите сделать настройки и возможность выхода из приложения доступными, и вы хотите, чтобы визуальные функции вашего приложения были доступны, когда другие приложения активны.
2 Другим вариантом является использование метода setPresentationOptions:
NSApplication
с аргументами из NSApplicationPresentationOptions
перечисления, такими как опция NSApplicationPresentationHideMenuBar
. только, нужно знать, что некоторые из опций взаимоисключающие. Есть правила, которым вы должны следовать, иначе вы не получите ничего, кроме исключений, выброшенных на консоль.
3 Есть третий и паршивый вариант. Если у вас есть вспомогательное приложение, которое является демоном, вы можете использовать его для изменения состояния LSUIElement вашего приложения и, по сути, для перезапуска вашего приложения. Это глупо и полностью выводит вас из переключателя приложений, что здорово, если вы действительно пишете что-то, чего там быть не должно, но это бывает редко.
Существует также метод NSView enterFullScreenMode:withOptions:
, хотя большинство приложений, для которых он подходит до 10.7, вероятно, должны использовать современный полноэкранный API в 10.7 и более поздних версиях.