我希望NSMenu
中包含多个NSMenuItem
s。这些项目应该像“普通”NSMenuItem
一样,但有一个例外:我希望能够自己绘制每个项目的内容(即“前景”)
那是:
我希望操作系统在我用鼠标悬停时绘制蓝色突出显示,勾选复选标记或破折号(表示“选中”/“多项选择的一部分” )。此外,我想“正常”,即菜单内置的鼠标/键盘行为。
我想绘制“内容”我自己:理想情况下,我想我必须实现/覆盖一个方法drawMenuItem:withCGContext:inRectangle:withTextColor
,它基本上获得了item,要绘制的CGContext
,项目的NSRect
以及Mac OS将使用的文本颜色 如果它自己绘制项目。
我知道(怀疑非常强烈)我的愿望可能太多了,但是我会完全没有足够的东西(例如,我可以想象自己从NSRect
取出NSMenuItem
,获得使用[NSColor selectedMenuItemTextColor]
之类的颜色和使用[NSContext currentContext]
)之类的上下文。
当然我考虑过Apple's instruction on this。但是,这样做会阻止菜单绘制蓝色高亮背景和复选标记。而且,据我所知,我必须实施,例如mouseUp
我自己。
总结一下:有没有办法获得一个(几乎)功能齐全的菜单,我只会自定义菜单项目标题的内容(甚至可能没有自定义视图)?
答案 0 :(得分:2)
答案是:否。
由于您要更换菜单项的整个视图,您负责绘图并处理事件。