如何在 Objective-C/Cocoa 中更改状态栏项目标题的颜色?

Posted

技术标签:

【中文标题】如何在 Objective-C/Cocoa 中更改状态栏项目标题的颜色?【英文标题】:How to change color of status bar item title in Objective-C/Cocoa? 【发布时间】:2011-04-01 18:07:19 【问题描述】:
//Create the NSStatusBar and set its length
statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];

[statusItem setHighlightMode:YES];
[statusItem setTitle:@"myTitle"];
[statusItem setToolTip:@"myToolTip"];
[statusItem setMenu:statusMenu];
[statusItem setEnabled:YES];

如何将“myTitle”的颜色变为蓝色?

当列表被禁用时,像 PeerGuardian 这样的应用程序会将其状态栏项目标题更改为红色,所以我想这是可能的。

【问题讨论】:

【参考方案1】:

使用NSStatusItem-setAttributedTitle方法,并给它一个适当颜色的NSAttributedString

NSDictionary *titleAttributes = [NSDictionary dictionaryWithObject:[NSColor blueColor] forKey:NSForegroundColorAttributeName];
NSAttributedString* blueTitle = [[NSAttributedString alloc] initWithString:@"myTitle" attributes:titleAttributes];

statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];
[statusItem setAttributedTitle:blueTitle];
[blueTitle release];

【讨论】:

非常感谢!工作没有问题!【参考方案2】:

Swift 4 版本:

let attributes = [NSAttributedStringKey.foregroundColor: NSColor.blue]
let attributedText = NSAttributedString(string: "myTitle", attributes: attributes)

let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
statusItem.attributedTitle = attributedText

【讨论】:

以上是关于如何在 Objective-C/Cocoa 中更改状态栏项目标题的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C / Cocoa:上传图像、工作内存和存储

在代码中使用核心数据 - Objective-C/Cocoa

Objective-C/Cocoa 中 Java 的 Thread.sleep() 等价物是啥?

Objective-C/Cocoa:获取关键代码

iOS 的objective-c/cocoa 中存在哪些方法族?

带有延迟 NSMenu 的 NSButton - Objective-C/Cocoa