objective-c - 制作自定义 NSMenuItem View 时如何反转 NSImageNameMenuOnStateTemplate 图像?

标签 objective-c cocoa nsimage nsmenuitem nsimageview

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

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

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

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

最佳答案

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

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

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

[stateImageView.cell setEnabled:NO];

关于objective-c - 制作自定义 NSMenuItem View 时如何反转 NSImageNameMenuOnStateTemplate 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26110561/

相关文章:

ios - 未调用委托(delegate)方法?

swift - 使用 takeSnapshot 的 WKWebView 间歇性空白/部分屏幕截图

objective-c - 在 Cocoa 中制作具有静态垂直尺寸的 CustomView

objective-c - 使用 AppKit 图像模板常量会产生 null

ios - UIImage 和 NSImage 报告不同的图像尺寸

ios - 如何将多个参数与 performSelector : method? 一起使用

objective-c - NSDictionary 的 -allKeys 方法的计算复杂度是多少?

ios - 是否可以通过编程方式确定 iOS 目标

multithreading - cocoa 停止按钮

macos - 在 Swift 中从下载的 NSData 创建 NSImage