13

我为我的 Cocoa 应用程序设置了一个自定义图标文件 (MyApp.icns)。如何NSImage从我的应用程序中访问图标的表示?

像下面这样的东西是完美的:

NSImage * iconImage = [MyApplication defaultIconAsImage];

但我敢肯定这并不容易:)

当然,我可以获取图标文件的路径,如下所示:

NSString * iconPath = [[NSBundle mainBundle]
                       pathForResource:@"MyApp" ofType:@"icns"];

但在我看来,应该有某种标准方法来访问应用程序图标文件,而不是通过名称调用它,因为名称可能会改变。

这样做的正确方法是什么?

4

3 回答 3

41

[NSApp applicationIconImage]

于 2009-08-31T19:46:44.993 回答
19

仅出于完整性考虑 - 这是您获取系统上任何应用程序或文件的图标的方式。

NSImage *iconImage = [[NSWorkspace sharedWorkspace] iconForFile:@"path"];

传递应用程序图标的应用程序包的路径或与文件关联的图标的文件路径。

于 2009-09-02T09:15:33.673 回答
8

请注意,-[NSApplication applicationIconImage]将自定义图标粘贴到应用程序时不会返回正确的图标。然后你需要做:

NSString* appPath = [[NSBundle mainBundle] bundlePath];
NSImage* appIcon = [[NSWorkspace sharedWorkspace] iconForFile:appPath];

(参考我为 Chromium 编写的停靠图标代码:http: //src.chromium.org/svn/trunk/src/chrome/browser/ui/cocoa/dock_icon.mm

于 2011-09-03T02:09:18.817 回答