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

e.J*_*mes 12 cocoa icons nsimage

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

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

NSImage * iconImage = [MyApplication defaultIconAsImage];
Run Code Online (Sandbox Code Playgroud)

但我确信这不是那么容易:)

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

NSString * iconPath = [[NSBundle mainBundle]
                       pathForResource:@"MyApp" ofType:@"icns"];
Run Code Online (Sandbox Code Playgroud)

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

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

Chu*_*uck 40

[NSApp applicationIconImage]

  • 你是认真的吗?噢亲爱的.我会羞愧地垂头丧气.谢谢你. (7认同)
  • 在 Interface Builder 中命名为 NSApplicationIcon (2认同)

Abi*_*ern 18

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

NSImage *iconImage = [[NSWorkspace sharedWorkspace] iconForFile:@"path"];
Run Code Online (Sandbox Code Playgroud)

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


小智 7

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

NSString* appPath = [[NSBundle mainBundle] bundlePath];
NSImage* appIcon = [[NSWorkspace sharedWorkspace] iconForFile:appPath];
Run Code Online (Sandbox Code Playgroud)

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