Скрыть заголовок NSMenuItem, просто показать его изображение?

У меня есть NSMenu (принадлежащий NSPopUpButton), где NSMenuItem все имеют набор изображений, и я бы хотел, чтобы они отображали только изображения, а не заголовки. Однако я не могу отключить заголовки, поскольку они обеспечивают доступность клавиатуры (и, я думаю, другие специальные возможности). Есть ли способ скрыть заголовок, например, положение изображения NSImageOnly для NSButton?


person Isaac    schedule 01.07.2012    source источник


Ответы (2)


Временный обходной путь, который меня не очень радует:

Вместо того, чтобы задавать заголовок NSMenuItem, установите заголовок с атрибутом в строку с атрибутом предполагаемого заголовка с системным шрифтом невидимо-малого размера, например 0,01.

person Isaac    schedule 01.07.2012
comment
Это больно +1, но это кажется самым надежным решением для Cocoa AppKit. - person Ky Leggiero; 25.08.2016

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

  1. Создайте экземпляр NSPopUpButton в интерфейсном конструкторе
  2. Установите тип «Потяните вниз», стиль «Квадрат» и установите изображение.
  3. Сделать только изображение положения (второй вариант в палитре)

Все эти параметры относятся к части кнопки элемента управления, но они создают меню, первый элемент которого является элементом меню только для изображения. На самом деле заголовок не задан (о чем свидетельствует заполнитель, отображаемый в поле заголовка). Это должно означать, что вы можете установить заголовок на nil, если вы делаете это программно.

person Monolo    schedule 01.07.2012
comment
Я думаю, что когда он настроен на раскрывающееся меню, а не на всплывающее, первый элемент меню всегда отображается на кнопке, а не в меню (тогда как во всплывающем окне выбранный элемент меню отображается на кнопке и все меню элементы, в том числе первый, отображаются в меню). То есть, когда я попробовал это, мой первый пункт меню больше не отображался в меню, а все мои последующие пункты меню по-прежнему отображали как свои изображения, так и их заголовки. - person Isaac; 01.07.2012