工具栏中的 NSPopUpButton 具有类似于 Pages.app UI 的固定图像
NSPopUpButton in a toolbar with fixed image similar to Pages.app UI
Pages(Numbers、Keynote)中的工具栏有一个带有固定图像的 NSPopUpButton(与选择的菜单无关)。使用视图调试,结果发现这是一个带有固定图像的标准 NSPopUpButton。
根据有关 setImage:
、
的 NSPopUpButton 文档
This method has no effect.
The image displayed in a pop up button cell is taken from the selected
menu item (in the case of a pop up menu) or from the first menu item
(in the case of a pull-down menu).
这意味着此标准 NSPopUpButton 具有非标准行为。
如何实现?因为 setImage:
没有效果,子类化 NSPopUpButtonCell 并覆盖 -drawImage:withFrame:inView:
没有效果(因为它从未被调用)。
这里的问题是混乱:下拉菜单将其菜单的第一个菜单项显示为 image/title。
不要使用 -setImage:
在下拉菜单中显示静态图像。而是将菜单的第一个元素设置为您要显示的 image/title,并将选择选项添加为附加菜单项。
@Volker 完全正确。这是内置行为,但您通过设置菜单中的第一个元素而不是使用 setImage:
或 setTitle:
.
来设置图像
示例,https://github.com/danieljfarrell/Toolbar-with-Pull-Down-Menu
Pages(Numbers、Keynote)中的工具栏有一个带有固定图像的 NSPopUpButton(与选择的菜单无关)。使用视图调试,结果发现这是一个带有固定图像的标准 NSPopUpButton。
根据有关 setImage:
、
This method has no effect. The image displayed in a pop up button cell is taken from the selected menu item (in the case of a pop up menu) or from the first menu item (in the case of a pull-down menu).
这意味着此标准 NSPopUpButton 具有非标准行为。
如何实现?因为 setImage:
没有效果,子类化 NSPopUpButtonCell 并覆盖 -drawImage:withFrame:inView:
没有效果(因为它从未被调用)。
这里的问题是混乱:下拉菜单将其菜单的第一个菜单项显示为 image/title。
不要使用 -setImage:
在下拉菜单中显示静态图像。而是将菜单的第一个元素设置为您要显示的 image/title,并将选择选项添加为附加菜单项。
@Volker 完全正确。这是内置行为,但您通过设置菜单中的第一个元素而不是使用 setImage:
或 setTitle:
.
示例,https://github.com/danieljfarrell/Toolbar-with-Pull-Down-Menu