NSToolbarItemGroup без пробелов
Я использую NSToolbarItemGroup для группировки набора NSToolbarItem вместе. В настоящее время между каждым элементом в группе имеется интервал 2pt, в идеале я бы хотел, чтобы они были полностью объединены визуально, как NSSegmentedControl.
После проверки почтового приложения создается впечатление, что они используют собственный NSToolbarItem, содержащий NSSegmentedControl. Я пробовал это в прошлом, но я не могу понять, как получить отдельные метки для каждого компонента и чтобы каждый компонент отображался отдельно в меню "переполнения".
Текущий вид:
Желаемый вид:
Я знаю, что "Центрирование" обрезается, это просто быстрое внедрение.
2 ответа
Вы можете добавить объект 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, который по сути действует как несколько кнопок, и вы имеете полный контроль и можете заставить его вести себя так, как вы хотите.
Я могу предложить вам использовать NSSegmentControl
добавлен в NSToolbarItem
как на картинке ниже.
Вам нужно несколько ярлыков под кнопками (например, "Ответить" и т. Д.). Для достижения этого вы можете установить NSToolbarItem
label-свойство и игра с пробелом между словами.