文章目录
一、设置dock图标
通过代码,我们可以在程序运行的时候动态设置Dock图标。修改图标有两种方法,如下:
方法一:指定为一个NSImage对象
[NSApp setApplicationIconImage:[NSImage imageNamed:@"swift"]];
方法二:用一个自定义的View,来显示为Dock图标
用自定义View做图标不能自动刷新,所以如果Dock图标有所改变--如加Badge时,可能需要手动通过-display方法刷新。
NSImageView *imgView = [[NSImageView alloc]init];
imgView.frame = NSMakeRect(10, 10, 50, 50);
imgView.imageFrameStyle = NSImageFramePhoto; //图片边框的样式
imgView.wantsLayer = YES;
imgView.layer.backgroundColor = [NSColor cyanColor].CGColor;
imgView.image = [NSImage imageNamed:@"swift"];
// imgView.imageScaling = NSImageScaleNone;
[[NSApp dockTile] setContentView: imgView];
[[NSApp dockTile] display];
上面介绍的两种方法修改的程序图标,会在程序退出之后还原为在Info.plist里指定的应用程序图标。
要永久的改变程序图标(也就是退出程序的时候也能显示修改后的图标)的方法是创建Dock图标的插件。因为这个话题涉及Bundle相关的内容,在这里就不详述了。
二、使用NSDockTile 设置Dock图标上的小红点
添加Badge
设置代码如下:
NSDockTile *dock = [NSApp dockTile];
if (dock) {
[dock setBadgeLabel:@"2"];
[dock setShowsApplicationBadge:YES];
}
系统会自动根据 BadgeLabel 内容,设置大小,如下:
移除Badge
移除Badge是把badgeLabel的内容设置为nil。
[[NSApp dockTile] setBadgeLabel:nil];
参考资料
(简书)MonkeyHan:MacOSX程序开发笔记(一)
https://www.jianshu.com/p/86994c8ca9ba