如何在创建自定义NSMenuItem视图时反转NSImageNameMenuOnStateTemplate图像?

时间:2014-09-29 23:42:44

标签: objective-c cocoa nsimage nsmenuitem nsimageview

我正在撰写自定义NSMenuItem视图。我希望能够在我的自定义NSImageNameMenuOnStateTemplate视图的NSImageView子视图中使用系统默认的“开启状态”菜单项图像(名为NSMenuItem的图像)。

当未选择菜单项时,复选标记图像看起来很好。选择后,我需要以某种方式绘制白色而不是正常的深灰色图像。否则,深蓝色选中的菜单项背景几乎看不到深灰色复选标记:

Screen shot of the dark gray checkmark against the dark blue selected menu item background

如何绘制白色复选标记图像?

1 个答案:

答案 0 :(得分:0)

我发现我可以通过设置与NSImageCell相关联的NSImageView的backgroundStyle来更改复选标记图像颜色。如果选择了菜单项,则将backgroundStyle设置为NSBackgroundStyleDark将生成白色复选标记。如果未选择菜单项,则将backgroundStyle设置为NSBackgroundStyleLight将生成正常的深灰色复选标记:

[stateImageView.cell setBackgroundStyle:(isSelected
                                         ? NSBackgroundStyleDark
                                         : NSBackgroundStyleLight)];

如果禁用了菜单项,我可以通过禁用单元格来生成禁用的复选标记外观:

[stateImageView.cell setEnabled:NO];