2011-12-08 35 views
4

我搜索一個解決方案,在Mac上用可可在文件圖標疊加(圖標徽章)(像Dropbox在Mac上執行)。 有沒有人知道一種方法來做到這一點? 我搜索了Xcode文檔以及我查看scpplugins源代碼,這是一種舊的碳代碼。在mac osx上找到文件圖標徽章(圖標疊加)> = 10.6

感謝所有幫助

+0

你可以在這個鏈接找到你要找的東西:http://stackoverflow.com/questions/3181145/add-an-icon-mac-pc-to-a-file-with-cocoa –

回答

4

由於搜索在雪豹返工,舊的碳方法將不再起作用。我在Finder中採用的路徑可以用來標記圖標,這涉及到編寫一個自定義包,然後需要將其注入Finder。

查看Wolf Rentzsch的mach_inject(https://github.com/rentzsch/mach_star/tree/master/mach_inject),以便能夠向Cocoa應用程序注入自定義包。

使用class-dump可以查看Cocoa應用程序的頭文件(例如Snow Leopard和Lion中的Finder),以瞭解您需要在自己的包中重寫的內容。

0

NSDockTile使這很簡單:

NSDockTile *dockTile = [NSApp dockTile]; 
[dockTile setBadgeLabel:@"33"]; 
+0

我是要求查找器文件圖標。當然,碼頭圖標的東西非常簡單。我不夠精確,但我編輯了我的問題。不管怎麼說,還是要謝謝你。 –

+0

感謝您的澄清。誰能投票-1請評論爲什麼? – sbooth

5

一點點遲到,但也許會幫助別人。

我解決了NSWorkspace類同樣的問題(見的setIcon:forFile:選擇

基本思想:

1)嘗試獲取文件的預覽與QLThumbnailImageCreate(如果不爲NULL你將獲得的小樣圖標)

2)如果你沒有得到縮略圖,然後得到默認OS X的圖標文件(NSWorkspace iconForFile

3)Combine縮略圖(或默認圖標)與你的徽章

4)設置新的圖標文件(NSWorkspace 的setIcon:forFile:選擇

+0

感謝您的解決方案。我會試一試。但是,如果用戶移動文件會怎麼樣。圖標是否留在那裏? –

+0

對不起,延遲迴答。有圖標保持在那裏。 – miham

+0

此解決方案是否正常工作? –

0

您可以使用以下兩種方法在文件夾/文件上疊加圖標。

  1. 您可以使用-setIcon:forFile:選擇:上NSWorkspace方法,如果你想改變在Mac OS X 文件或文件夾的圖標,你使用這種方法,覆蓋退出應用圖標疊加後然而即使您將該文件/文件夾移到了外面。這可能不是確切的解決方案。

  2. 取而代之,應用程序內部使用Finder Sync擴展目標(文件 - 新建 - 目標 - Finder同步擴展)。 創建擴展後,您的應用程序不會與此目標直接通信。爲了激活,使用AppleScript的命令(我不認爲有這個一個更好的選擇。)

要激活

的NSString * pluginPath = [[[一個NSBundle mainBundle] builtInPlugInsPath] stringByAppendingPathComponent:@ 「yourextension.appex」]; NSString * pluginkitString = [NSString stringWithFormat:@「pluginkit -e use -a \」%@ \「」,pluginPath];}};}}; system([pluginkitString cStringUsingEncoding:NSUTF8StringEncoding]);

一旦目標被激活,我們的應用程序就可以通過幾種方式與該擴展進行通信。其中很少是:

使用NSDistributedNotificationCenter。該類提供了一種將通知發送給其他任務中的對象的方法(如此處的擴展)。

其他方式是使用[[NSUserDefaults alloc] initWithSuiteName:@「teamid.com.company.test」];

您的應用程序和目標應該有共同的組標識符(即「teamid.com.company.test」)。 爲了在Target - Capabilities - App Groups下啓用「App Groups」,並給出如上所述的標識符(即「teamid.com.company.test」),那麼teamid就是您將從您的Apple開發人員門戶獲得的標識。爲您的擴展目標也做同樣的步驟。

在結束之前,請確保分機已啓動或未啓動。要檢查系統偏好 - 擴展 - 您的應用程序查找器。 這是用戶可以爲應用程序啓用/禁用圖標疊加的全局指向。