NSStatusItem
显示一个小 NSPopover
,点击时可见。
只需将 AXStatusItemPopup
中的 .h 和 .m 文件从项目中拖入即可。
AXStatusItemPopup *statusItemPopup = [[AXStatusItemPopup alloc] initWithViewController:contentViewController image:image alternateImage:alternateImage];
contentViewController
是一个 NSViewController 实例。此视图控制器视图的内容将在弹出窗口中显示。 image
是应该显示在状态栏中的 NSImage。 alternateImage
提供了当前弹出窗口活动时应显示的 NSImage。
// init content view controller
// its contents will be shown inside the popover
ContentViewController *contentViewController = [[ContentViewController alloc] initWithNibName:@"ContentViewController" bundle:nil];
// create icon images shown in statusbar
NSImage *image = [NSImage imageNamed:@"cloud"];
NSImage *alternateImage = [NSImage imageNamed:@"cloudgrey"];
AXStatusItemPopup *statusItemPopup = [[AXStatusItemPopup alloc] initWithViewController:contentViewController image:image alternateImage:alternateImage];
默认情况下,显示和隐藏弹出窗口会进行动画处理。但是,可以全局禁用弹出窗口的动画。
statusItemPopup.animated = NO;
可以通过在 AXStatusItemPopup
实例上调用的以下方法在代码中手动显示和隐藏弹出窗口。
// animation defaults to the value set in statusItemPopup.animated
[statusItemPopup showPopover];
// overrides any value set to statusItemPopup.animated
[statusItemPopup showPopoverAnimated:YES];
// hides popover
[statusItemPopup hidePopover];
随时与我联系。
版权 (C) 2013 Alexander Schuch
授予任何人无费用地获得本软件和相关文档文件(“软件”)副本的权利,在不限制包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或转售软件副本的权利,并准许该软件的接收者行使上述权利,但须遵守以下条件
必须将上述版权声明和本许可声明包括在软件的任何副本或实质部分中。
本软件按“现状”提供,不提供任何形式的质量保证,包括但不限于适用性、针对特定用途的合适性和不侵犯知识产权等保证。在任何情况下,作者或版权持有者都不会因任何索赔、损害或其他责任(无论是否构成合同行为、侵权或其他行为),以及与该软件、使用或其他方式处理软件有关的或由此产生的任何事件或情况,承担任何责任。
云图标由Pieter J. Smits设计,来自Noun Project。