Dock图示上显示讯息标记
打开Mail或讯息APP都会看到右上角会显示目前信箱数或是讯息数,就像上面图片一样该怎么做呢?
右上角显示的称为讯息标记(Badge),当我们写好程式并执行时,首先程式会提供NSApplication
一些必要的方法,之后Mac上的Dock就会跟程式取得物件NSDockTile
,然而NSDockTile
物件中必需要提供图示资料、讯息标记资料,预设图示资料是从方法applicationIconImage
取得,也就是APP的icon图示,但讯息标记预设则是空值,因为记息标记是空值,所以就不会在Dock上显示,除非后续自行指定后才会显示。要取得执行程式的NSDockTile
物件必需透过NSApp
物件的方法dockTile
取得:
//-----------start----------- NSDockTile *dockTile = [NSApp dockTile]; //------------end------------
Dock上显示讯息标记叫Badge
,使用setBadgeLabel
方法来改变内容:
//-----------start----------- NSDockTile *dockTile = [NSApp dockTile]; [dockTile setBadgeLabel:@"S10"]; //------------end------------
当然改变完之后必需要让Dock能够重新显示新的讯息:
//-----------start----------- NSDockTile *dockTile = [NSApp dockTile]; [dockTile setBadgeLabel:@"S10"]; [dockTile display];//一定要呼叫此方法才能更新Dock上的显示 //------------end------------
只需要三行指定就能让Dock上能显示讯息标记(Badge),如果你想要恢复正常时,只需要将BadgeLabel
填空值就完成:
//-----------start----------- NSDockTile *dockTile = [NSApp dockTile]; [dockTile setBadgeLabel:@""];//不填内容就能恢复 [dockTile display];//一定要呼叫此方法才能更新Dock上的显示 //------------end------------
以上将结果写成一个范例程式后并做成动画表达,范例程式功能使用2个按键来显示讯息标记内容为S10
,另一个则取消它:
程式.m档内容参考:
//-----------start----------- #import "AppDelegate.h" @interface AppDelegate () @property (weak) IBOutlet NSWindow *window; @end @implementation AppDelegate - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { // Insert code here to initialize your application } - (void)applicationWillTerminate:(NSNotification *)aNotification { // Insert code here to tear down your application } - (IBAction)showBadge:(id)sender { NSDockTile *dockTile = [NSApp dockTile]; [dockTile setBadgeLabel:@"S10"]; [dockTile display]; } - (IBAction)showBadgeToNormal:(id)sender { NSDockTile *dockTile = [NSApp dockTile]; [dockTile setBadgeLabel:@""]; [dockTile display]; } @end //------------end------------