mac osx> = 10.6上的finder文件图标徽章(图标叠加)

时间:2011-12-08 08:39:10

标签: macos cocoa finder nsdocktile

我搜索一个解决方案,用mac上的cocoa执行文件图标叠加(图标标记)(就像Dropbox在mac上做的那样)。 有谁知道这样做的方法? 我搜索了Xcode文档,我查看了scpplugins源代码,这是一种旧的碳代码。

感谢您的帮助

5 个答案:

答案 0 :(得分:5)

有点迟到,但也许会帮助别人。

我用类NSWorkspace解决了同样的问题(参见 setIcon:forFile:options

基本理念:

1。)尝试使用QLThumbnailImageCreate预览文件(如果不是NULL,您将获得缩略图图标)

2.。)如果你没有获得缩略图,那么获取文件的默认OS X图标(NSWorkspace iconForFile

带有徽章的

3。)Combine缩略图(或默认图标)

4.。)为文件设置新图标(NSWorkspace setIcon:forFile:options

答案 1 :(得分:4)

由于Finder在Snow Leopard中进行了重新设计,旧的Carbon方法将不再适用。我在Finder中为徽标图标设置的路线包括编写一个自定义捆绑包,然后需要将其注入Finder。

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

使用class-dump可以查看Cocoa应用程序的头文件(例如Snow Leopard和Lion中的Finder),以了解在自己的bundle中需要覆盖的内容。< / p>

答案 2 :(得分:1)

我知道这是一个老问题。

最近有一个实现此功能的库:https://github.com/liferay/liferay-nativity

答案 3 :(得分:0)

NSDockTile使这很简单:

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

答案 4 :(得分:0)

您可以使用以下两种方法在文件夹/文件上叠加图标。

  1. 如果要在Mac OS X中更改文件或文件夹的图标,可以在NSWorkspace上使用-setIcon:forFile:options:方法。 但是,使用此方法应用图标叠加后,即使您将文件/文件夹移到外面,叠加也会退出。这可能不是确切的解决方案。

  2. 而是在您的应用内使用Finder Sync Extension目标(文件 - 新建 - 目标 - Finder同步扩展)。 创建扩展程序后,您的应用程序无法与此目标直接通信。要激活,请使用AppleScript命令(我不认为有更好的选择。)

  3. 激活

    NSString * pluginPath = [[[NSBundle mainBundle] builtInPlugInsPath] stringByAppendingPathComponent:@&#34; yourextension.appex&#34;];

    NSString * pluginkitString = [NSString stringWithFormat:@&#34; pluginkit -e使用-a \&#34;%@ \&#34;&#34;,pluginPath]; system([pluginkitString cStringUsingEncoding:NSUTF8StringEncoding]);

    一旦目标被激活,我们的应用程序可以通过几种方式与该扩展进行通信。其中很少是:

    使用NSDistributedNotificationCenter。此类提供了一种向其他任务中的对象发送通知的方法(如此处的扩展名)。

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

    您的应用程序和目标都应具有公共组标识符(即&#34; teamid.com.company.test&#34;)。 对于此启用&#34;应用程序组&#34;在目标 - 功能 - 应用程序组下,并给出如上所述的标识符(即&#34; teamid.com.company.test&#34;),teamid是您从苹果开发者门户网站获取的ID。对扩展目标执行相同的步骤。

    在结束之前,请确保已激活扩展程序。要检查是否转到系统首选项 - 扩展程序 - 您的应用程序查找器。 这是全球的一点,用户可以为您的应用程序启用/禁用图标覆盖。

相关问题