Cocoa教学:如何在菜单栏显示图标及菜单
2011-10-11原文:http://www.cocoachina.com/b/?p=164
如果你用过CoverSutra,那么你一定对它的菜单栏图标有印象。通过在菜单栏画一个心型小图标,你可以在菜单栏控制iTunes的音乐播放和欣赏音乐封面。
要在自己的程序里加入菜单栏图标,其实也很简单。
你要做的仅仅是在程序里添加一个NSStatusItem,比如这样:
@interface Controller : NSObject { NSStatusItem*_statusItem;
}
在希望显示图标的位置加入如下代码:
_statusItem = [[NSStatusBarsystemStatusBar]statusItemWithLength:NSVariableStatusItemLength];
[_statusItemsetImage:[NSImageimageNamed:@"test"]];
图标就可以显示出来了。
如果希望点击图标后显示菜单,你可以手工创建一个菜单:
NSMenu* menu;
menu = [[NSMenualloc] initWithTitle:@""];
[menu addItemWithTitle:@"Hi"action:@selector(myhi) keyEquivalent:@""];
[_statusItemsetMenu:menu];
[menu release];
这里假设myhi是你自己程序中的一个方法。
这样,你的菜单栏图标就有一个菜单了。你也可以使用addItemWithTitle方法添加更多的菜单。
在程序退出的时候,记得把图标释放:
- (void)dealloc
{
[[NSStatusBarsystemStatusBar] removeStatusItem:_statusItem];
[_statusItemrelease];
[superdealloc];
}
菜单栏图标还有一些其他的属性,你可以进行设置,比如:
alternateImage: 点击后显示的图标。如果设置了这个属性,点击图标后可以显示另外一幅图片。
highlightMode: 点击图标后是否高亮。
title: 如果设置title属性,将会在图标后面显示文字。
length: 图标在菜单栏占的长度。设置为-1使用图片的默认长度。
toolTip:鼠标指到图标上显示的工具提示。
其他的属性你可以自己摸索。
Pal Kim写了一个非常好而且极为简单的例子,你可以在这里下载。