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------------