如何获取用户Mac的图标?

Ale*_*x B 12 cocoa icons objective-c nsimage

使用Objective-C和Cocoa,有没有人知道如何获取用户计算机的图标(在Finder中的"设备"和"网络"下显示的图标)?不是硬盘图标,是用户设备的实际图标.它的范围从MacBook图标到Mac Pro图标到Windows蓝屏死机监视器图标.

我尝试过以下几行:

NSImage *icon = [[NSWorkspace sharedWorkspace] 
                  iconForFileType: NSFileTypeForHFSTypeCode(kComputerIcon)];
Run Code Online (Sandbox Code Playgroud)

但显然,这只是一直返回相同的图标.我也尝试过该iconForFile:方法,但我不知道要用作参数的文件路径.任何人都能指出我正确的方向吗?

coc*_*fan 28

[NSImage imageNamed: NSImageNameComputer]
Run Code Online (Sandbox Code Playgroud)

这将返回当前计算机的图标

  • 辉煌!是否有这些"命名"图像的其他字符串或常量列表? (3认同)
  • 可以在NSImage文档中找到命名图像的完整列表.此外,对于记录,您应该使用常量NSImageNameComputer而不是文字@"NSComputer",因为常量是实际公开为公共API的常量. (2认同)
  • 将文字改为常数.这里列出了所有常量http://tinyurl.com/m5qcl5 (2认同)

Ale*_*x B 7

另一个寻找图标的地方:

/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources
Run Code Online (Sandbox Code Playgroud)

你可以使用这里的文件创建NSImage对象:

[[NSImage alloc] initWithContentsOfFile:@"/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/com.apple.macbook-unibody.icns"];
Run Code Online (Sandbox Code Playgroud)

但是,可能不建议对这样的值进行硬编码,因为Apple可能会更改图标的位置.有一个名为IconsCore.h的文件,其中包含许多其他常量值,例如'kToolbarDesktopFolderIcon',可以按如下方式使用:

[[NSWorkspace sharedWorkspace] iconForFileType: NSFileTypeForHFSTypeCode(kToolbarDesktopFolderIcon)];
Run Code Online (Sandbox Code Playgroud)

我相信这些常数只适用于Snow Leopard.


Ira*_*oke 5

如果您正在寻找任何其他系统图标,请查看Apple的名为"IconCollection"的示例项目.http://developer.apple.com/mac/library/samplecode/IconCollection/listing5.html

该示例附带一个plist文件,其中包含可以使用的很多系统图标的名称和代码;

OSType code = UTGetOSTypeFromString((CFStringRef)codeStr);
NSImage *picture = [[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(code)];
Run Code Online (Sandbox Code Playgroud)

其中codeStr是icons.plist中提供的图标的字符串代码