2015-07-06 8 views
5

Я использую NSToolbarItemGroup для группировки набора элементов NSToolbarItem. В настоящее время между каждым элементом группы есть 2pt-пространство, в идеале я бы хотел, чтобы они были полностью объединены визуально аналогично NSSegmentedControl.NSToolbarItemGroup без пробелов

После проверки приложения Mail похоже, что они используют пользовательский NSToolbarItem, содержащий NSSegmentedControl. Я пробовал это в прошлом, но я не могу понять, как получить отдельные метки под каждым компонентом и каждый компонент отображаться индивидуально в меню переполнения.

Текущий Облик:

enter image description here

Желаемая Облик:

enter image description here

Я знаю, 'Сосредоточенный' является обрезаемый, это просто быстрая реализация.

ответ

1

Я могу предложить вам использовать NSSegmentControl, добавленный к NSToolbarItem, как на рисунке ниже.

enter image description here image

Вам нужны метки под кнопки (например, "Ответить" и т.д.). Для этого вы можете установить NSToolbarItem ярлык-свойство и играть в пространстве между словами.

attributes inspector

+0

спасибо. Я пробовал это решение, но есть большой недостаток в реализации. Возьмем Mail.app в качестве примера (вам может потребоваться настроить панель инструментов, чтобы воспроизвести это). Обратите внимание, что если вы измените размер окна, чтобы кнопка (Ответить | Ответить | Переадресация) перешла в переполнение. Если я сделаю то, что вы предлагаете, будет только один пункт меню, но в Mail.app вы увидите отдельный элемент для каждого из сегментированных элементов. – xizor

1

Вы можете добавить объект NSToolbarItem на панели инструментов, а затем установите NSViewController как это (используя Swift):

runStatus.view = RunStatusView() 

где "runStatus" это имя @IBOutlet для NSToolbarItem и «RunStatusView» - это объект NSView с переопределением метода drawRect. Вы также можете указать ширину и высоту NSView; например, заставить ширину постоянной при 125:

runStatus.minSize = NSSize(width: 125, height: 32) 
runStatus.maxSize = NSSize(width: 125, height: 32) 

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

Наконец, если вы все еще не можете получить именно то, что хотите, сделайте группу кнопок одним NSToobarItem, а в «RunStatusView» (используя приведенный выше пример) нарисуйте его, как вы хотите, и переопределите событие mouseDown (также в «RunStatusView»), чтобы увидеть, куда именно пользователь щелкает. Затем есть один элемент NSToolbarItem, который по существу действует как несколько кнопок, и вы имеете полный контроль и можете заставить его вести себя, как хотите.