创建Status Bar 应用

创建一个Cocoa Application工程,如下实现AppDelegate。

AppDelegate.h 文件

#import <Cocoa/Cocoa.h>

@interface AppDelegate : NSObject <NSApplicationDelegate> {
    NSStatusItem *statusItem;
}

@property (assign) IBOutlet NSWindow *window;

- (IBAction)quit:(id)sender;

- (IBAction)test:(id)sender;

@end

AppDelegate.m文件

#import "AppDelegate.h"

@implementation AppDelegate

@synthesize window;

- (void)dealloc
{
    [super dealloc];
}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [self initStatusMenu];
}

- (void)initStatusMenu {
    NSStatusBar *bar = [NSStatusBar systemStatusBar];
    
    statusItem = [[bar statusItemWithLength:NSVariableStatusItemLength] retain];
    [statusItem setTitle:@"StatusBar"];
    [statusItem setHighlightMode:YES];
    [statusItem sendActionOn:NSMouseEntered];
    
    NSMenu *menu = [[NSMenu alloc] initWithTitle:@""];
    [menu setAutoenablesItems:NO];
    
    NSMenuItem *testMenuItem = [[NSMenuItem alloc] initWithTitle:@"Test" action:@selector(test:) keyEquivalent:@""];
    [menu addItem:testMenuItem];
    
    NSMenuItem *quitMenuItem = [[NSMenuItem alloc] initWithTitle:@"Quit" action:@selector(quit:) keyEquivalent:@""];
    [menu addItem:quitMenuItem];
    
    [statusItem setMenu:menu];
    [menu release];
    [testMenuItem release];
    [quitMenuItem release];
}

- (IBAction)quit:(id)sender {
    [NSApp terminate:self];
}

- (IBAction)test:(id)sender {
    NSLog(@"test");
}

@end

需要注意的是要在工程的plist文件中加一个新的属性: Application is agent(UIElement),将值设为YES。 这样在启动程序的时候,Dock上就不会显示App的图标。



你还可以通过setImage: 和 SetAlternateImage: 来设置StatusBar的图标。 


最后,编译运行,会在顶部的状态栏看到你的Status Bar。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值