除非单击,否则NSStatusItem超大且不可见

时间:2017-04-20 15:50:44

标签: objective-c macos cocoa nsstatusitem

我正在使用NSStatusItem处理应用程序。

我有两个问题1是未选择状态下缺少图标

enter image description here

但是,当您单击应该显示应用程序图标的位置时,该区域很大。与菜单大小相同。

enter image description here

以下是我创建NSStatusItem和菜单的方法。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    _statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
    _statusItem.title = @"";
    _statusItem.image = [NSImage imageNamed:@"bulb"];
    _statusItem.alternateImage = [NSImage imageNamed:@"bulb-alt"];
    _statusItem.highlightMode = YES;


    NSMenu *menu = [[NSMenu alloc] init];
    [menu addItemWithTitle:@"About App" action:@selector(openAboutThisImage:) keyEquivalent:@""];
    [menu addItem:[NSMenuItem separatorItem]]; // A thin grey line
    [menu addItemWithTitle:@"Start at Login" action:@selector(startAtLogin:) keyEquivalent:@""];
    [menu addItem:[NSMenuItem separatorItem]]; // A thin grey line
    [menu addItemWithTitle:@"Quit App" action:@selector(terminate:) keyEquivalent:@""];
    _statusItem.menu = menu;

}

我有两套图标。一个白色和一个黑色。每组有两个尺寸16x16和32x32(@ 2x)。

图标尺寸:

enter image description here enter image description here

enter image description here enter image description here

白色的大小相同。

BLACK图标的资产JSON

  {
  "images" : [
    {
      "idiom" : "universal",
      "filename" : "bulb.png",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "bulb@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

和白色图标

{
  "images" : [
    {
      "idiom" : "universal",
      "filename" : "bulb-alt.png",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "bulb-alt@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

我真的不知道发生了什么。我一直在使用Apple Docs作为参考。但我显然遗漏了一些东西。

任何帮助?

1 个答案:

答案 0 :(得分:0)

两个建议:

  • 当您的图标为方形时,请使用NSSquareStatusItemLength
  • 创建状态栏
  • 使用模板图片:

    NSImage *image = [NSImage imageNamed:@"bulb"];
    image.template = YES;
    _statusItem.image = image;
    

    删除该行以设置备用图像。操作系统管理正常/黑暗的外观。