我想有一个NSMenu
其中有几个NSMenuItem
s。这些项目的行为应与“正常”NSMenuItem
一样,但有一个例外:我希望能够自行绘制每个项目的内容(即“前景”)。实现自定义绘制的NSMenuItem视图的简单方法
即:
我想操作系统当我悬停绘制蓝色突出显示用鼠标,画出复选标记或破折号(以表示“选择” /“的多部分-selection“)。此外,我想“正常”,即菜单内置的鼠标/键盘行为。
我想提请了“内容” 自己:理想情况下,我会想象我将不得不实行/覆盖一个单一的方法
drawMenuItem:withCGContext:inRectangle:withTextColor
,基本上获得该项目时,CGContext
绘制成的NSRect
以及文本颜色,如果Mac OS引用该项目本身,则会使用该文本颜色。
我知道(怀疑很stronlgy),我的愿望是可能太多了,但我会用一些适当的(例如,我可以想像取出由NSMenuItem
的NSRect
自己,获得使用类似的颜色完全正常[NSColor selectedMenuItemTextColor]
,以及使用诸如[NSContext currentContext]
之类的上下文)。
当然我认为是Apple's instruction on this。但是,这样做可以防止菜单绘制蓝色高光背景和复选标记。而且,据我所知,我必须实施mouseUp
我自己。总结:有没有一种方法可以获得(几乎)功能齐全的菜单,其中我只能自定义菜单项标题所在的内容(可能甚至没有自定义视图)?
您不能设置菜单项的图像吗? – Willeke
@Willeke我想到了这一点,但有点犹豫,因为我现在知道这是否是最初的形象。此外,我不确定是否可以直接根据“NSMenuItem”的“高亮”状态动态改变前景色。 – phimuemue