Mac NSStatusBar

先看NSStatusBar 效果图然后再展开对NSStatusBar的使用。
这里写图片描述

首先声明一个NSStatusItem。

@property (retain, strong) NSStatusItem *item;

然后对声明的item进行操作

#pragma mark -- NSStatusBar添加图标
- (void)addIcon {
    self.item = [[NSStatusBar systemStatusBar] statusItemWithLength:30];
    NSImage *image = [NSImage imageNamed:@"menu_icon"];
    [image setTemplate:YES];
    self.item.image = image;
    self.item.highlightMode = YES;
}
#pragma mark - 添加item
- (void)addItem {
    NSMenu *menu = [[NSMenu alloc] initWithTitle:@"cloudscreen"];
    [menu setMinimumWidth:200];
    self.item.menu = menu;

    // 打开vpn
    NSMenuItem *disableItem = [[NSMenuItem alloc]initWithTitle:@"打开vpn" action:@selector(setAutoProxy) keyEquivalent:@""];
    [disableItem setTarget:self];
    [menu addItem:disableItem];

    // 打开软件
    NSMenuItem *showItem = [[NSMenuItem alloc]initWithTitle:@"打开软件" action:@selector(showClock) keyEquivalent:@""];
    [showItem setTarget:self];
    [menu addItem:showItem];

    [menu addItem:[NSMenuItem separatorItem]];

    // 退出登录
    NSMenuItem *exitItem = [[NSMenuItem allocWithZone:[NSMenu menuZone]]initWithTitle:@"退出" action:@selector(exit) keyEquivalent:@""];
    [exitItem setTarget:self];
    [menu addItem:exitItem];
}

item实现方法

#pragma mark -- 打开软件
- (void)showClock {
    [NSApp activateIgnoringOtherApps:YES];
    [self.window makeKeyAndOrderFront:nil];
    [self.window performSelector:@selector(orderFront:) withObject:nil afterDelay:0.1];

    // 关于软件
//    [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://tanhao.sinaapp.com"]];
}

#pragma mark -- Item代理方法
- (void) setAutoProxy {
    NSLog(@"setAutoProxy=====");
    [[CSVPNManger sharedManger]connectVPN];
}

#pragma mark -- 退出
- (void)exit {
    [[CSVPNManger sharedManger]stopVpn];
    NSLog(@"关闭vpn");
    [[NSApplication sharedApplication] terminate:nil];
}

之前也写了一个简单的NSStatusBar,当窗口关闭的时候NSStatusBar会自动灰掉。知道其原理之后就不会出现类似情况了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值