如何获取标准 Mac OS X 图标以在您的应用程序中使用?
Posted
技术标签:
【中文标题】如何获取标准 Mac OS X 图标以在您的应用程序中使用?【英文标题】:How to get standard Mac OS X icons to use in your app? 【发布时间】:2015-09-26 19:40:16 【问题描述】:如何在您的设计/应用程序中使用标准 Mac OS X 图标?
我所说的标准图标是指此屏幕截图中的工具栏图标:
是否有存储这些文件的位置或任何从 Mac OS X 应用程序中提取它们的方法?
【问题讨论】:
【参考方案1】:请参阅+[NSImage imageNamed:(NSString)name] 以及其中的链接以获取不同的操作系统定义图像列表...
例如。
NSImage * img = [NSImage imageNamed:NSImageNameFolder];
工具栏图片具体列出:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSImage_Class/index.html#//apple_ref/doc/constant_group/Toolbar_Named_Images
【讨论】:
看起来很短。标准查找器有更多的图标也适合我的应用程序。是否有可能以某种方式提取它们?【参考方案2】:并非所有这些都是标准的。对于那些,您使用+[NSImage imageNamed:]
和系统定义的图像名称常量之一,例如NSImageNameGoLeftTemplate
或NSImageNameIconViewTemplate
。
【讨论】:
如果有些是非标准的,如何让它们在我的应用程序中使用?不想使用自定义图标更改默认用户体验。有没有办法找到路径或从应用程序中提取它们? @zelid 如果操作系统不共享它们,那么您必须自己提供艺术品......“借用”操作系统不共享的图像是非常有问题的做法,但是免费图标库中应该提供很多,但它们可能不是 100% 相同。 如果它们不是标准的,那么它们就不是“默认用户体验”的一部分,它们是特定于应用程序的。您需要自己设计和使用。即使您可以从 Apple 应用程序中提取它们,它们也受版权保护,您无权将它们作为您自己的应用程序的一部分发布。 @Ken 虽然 OP 说“提取”,但我似乎很清楚他只想在他的应用程序中绘制图像,而不是复制和发布他自己的版本。 “如果它们不是标准的,那么它们就不是“默认用户体验”的一部分”,但不可否认的是,存在大量无法通过 API 命名或访问的 OS 映像。工具栏图像的简短列表很好;苹果可以在这些方面做得更多,这将帮助开发人员在他们自己的应用程序中保持苹果的外观和感觉。我看不出有什么理由反对这一点,除了苹果必须花时间...... @zeppenwolf:也许这就是他想要的,但是:a) 没有受支持的方式来访问这些图像,并且 b) 即使有,它们也可以随着任何软件更新而改变或消失,这使它们不适合在他的应用程序中使用。发送他自己的图像或使用受支持的 API 是唯一不错的选择。如果他对 API 提供的标准图像不满意,他应该向 Apple 提交错误。【参考方案3】:其他图片/图标可从IconServices
获得:
/*
Type of the predefined/generic icons. For example, the call:
err = GetIconRef(kOnSystemDisk, kSystemIconsCreator, kHelpIcon, &iconRef);
will retun in iconRef the IconRef for the standard help icon.
*/
/* Generic Finder icons */
public var kClipboardIcon: Int get
public var kClippingUnknownTypeIcon: Int get
public var kClippingPictureTypeIcon: Int get
public var kClippingTextTypeIcon: Int get
public var kClippingSoundTypeIcon: Int get
public var kDesktopIcon: Int get
public var kFinderIcon: Int get
public var kComputerIcon: Int get
public var kFontSuitcaseIcon: Int get
public var kFullTrashIcon: Int get
public var kGenericApplicationIcon: Int get
public var kGenericCDROMIcon: Int get
...
...
您可以使用带有上述常量的 NSWorkspace 图标方法:
NSWorkspace.shared.icon(forFileType: NSFileTypeForHFSTypeCode(UInt32(kGenericApplicationIcon)))
【讨论】:
以上是关于如何获取标准 Mac OS X 图标以在您的应用程序中使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 wxPython 应用程序中更改 Mac OS X 停靠图标