所以我对NSStatusBar
项目的图像有问题,似乎图像正在推离其余的菜单项as you can see in this picture.但是当菜单栏处于非活动状态时(如在我在我的另一台显示器上或不在应用程序中)问题不会发生as you can see in this picture。我很确定我的代码是正确的。
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setHighlightMode:YES];
[statusItem setAction:@selector(openWindow)];
[statusItem setTarget:self];
if ([[[NSAppearance currentAppearance] name] containsString:NSAppearanceNameVibrantDark]) {
[statusItem setImage:[NSImage imageNamed:@"whiteMenu.png"]];
} else {
[statusItem setImage:[NSImage imageNamed:@"blackMenu.png"]];
}
我看过这个问题:Display image in a cocoa status app但问题仍然存在,所以我不知道还能做什么,谢谢你的帮助! PS:我认为问题是NSVariableStatusItemLength
,我试过NSSquareStatusItemLength
但没有运气,也尝试过自己设定,但遇到同样的问题,但收效甚微。
答案 0 :(得分:6)
在实现菜单栏中显示的漂亮NSStatusItem
时,我也遇到了一些问题
当符合以下条件(以及随附资产)时,我获得了最佳结果
highlightMode
并且该项目必须具有关联的NSMenu
这个代码片段会在系统主菜单中为您提供一个外观漂亮的NSStatusItem
的基本应用程序(我在这里使用了系统提供的图像,但您可以使用带有“模板”的自定义18x18 PDF获得相同的结果“名称后缀”:
@interface AppDelegate ()
@property NSStatusItem* statusItem;
@property (weak) IBOutlet NSMenu *statusMenu;
@end
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSImage* statusImage = [NSImage imageNamed:NSImageNameActionTemplate];
statusImage.size = NSMakeSize(18.0, 18.0);
self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength];
self.statusItem.image = statusImage;
self.statusItem.highlightMode = YES;
self.statusItem.enabled = YES;
self.statusItem.menu = self.statusMenu;
}
- (void)applicationWillTerminate:(NSNotification *)aNotification {
// Insert code here to tear down your application
}
@end