如何为我的应用程序加载图标的NSImage表示?

时间:2009-08-31 19:40:19

标签: cocoa icons nsimage

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

以下内容将是完美的:

NSImage * iconImage = [MyApplication defaultIconAsImage];

但我确定 容易:)

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

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

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

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

3 个答案:

答案 0 :(得分:38)

答案 1 :(得分:17)

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

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

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

答案 2 :(得分:6)

请注意,将自定义图标粘贴到应用程序时,-[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