macOS 开发 - NSDockTile设置Dock图标上的小红点

一、设置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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI工程仔

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值