【发布时间】:2022-04-05 14:04:54
【问题描述】:
这是一个答案,而不是一个问题。在网上搜索,我只找到了这个问题(http://www.cocoabuilder.com/archive/cocoa/58379-changing-the-text-color-of-an-nsmenuitem-in-an-nspopupbutton.html)的一个真正被破解、扭曲的答案,可以像这样更优雅地回答:
NSArray *itemArray = [scalePopup itemArray];
int i;
NSDictionary *attributes = [NSDictionary
dictionaryWithObjectsAndKeys:
[NSColor redColor], NSForegroundColorAttributeName,
[NSFont systemFontOfSize: [NSFont systemFontSize]],
NSFontAttributeName, nil];
for (i = 0; i < [itemArray count]; i++) {
NSMenuItem *item = [itemArray objectAtIndex:i];
NSAttributedString *as = [[NSAttributedString alloc]
initWithString:[item title]
attributes:attributes];
[item setAttributedTitle:as];
}
【问题讨论】:
-
请注意,
setAttributedTitle是在 10.3 中引入的,它仅在 2003 年可用,比您提到的电子邮件交换晚。所以这是他们唯一能做的。 -
太棒了!稍作修改,它也适用于为每个菜单项添加简单的图像。
-
这种方法的一个问题是,您似乎无法使用这种方法使用“反向”文本设置突出显示状态的样式。我一直试图找出一种方法来做到这一点,而无需在
NSMenu中使用自定义视图。到目前为止没有运气。
标签: cocoa