【问题标题】:How to get standard Mac OS X icons to use in your app?如何获取标准 Mac OS X 图标以在您的应用程序中使用?
【发布时间】:2021-02-14 11:47:40
【问题描述】:

如何在您的设计/应用程序中使用标准 Mac OS X 图标?

我所说的标准图标是指此屏幕截图中的工具栏图标:

是否有存储这些文件的位置或任何从 Mac OS X 应用程序中提取它们的方法?

【问题讨论】:

    标签: macos cocoa osx-yosemite


    【解决方案1】:

    其他图片/图标可从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)))
    

    【讨论】:

      【解决方案2】:

      并非所有这些都是标准的。对于那些,您使用+[NSImage imageNamed:] 和系统定义的图像名称常量之一,例如NSImageNameGoLeftTemplateNSImageNameIconViewTemplate

      【讨论】:

      • 如果有些是非标准的,如何让它们在我的应用程序中使用?不想使用自定义图标更改默认用户体验。有没有办法找到路径或从应用程序中提取它们?
      • @zelid 如果操作系统不共享它们,那么您必须自己提供艺术品......“借用”操作系统不共享的图像是非常有问题的做法,但是免费图标库中应该提供很多,但它们可能不是 100% 相同。
      • 如果它们不是标准的,那么它们就不是“默认用户体验”的一部分,它们是特定于应用程序的。您需要自己设计和使用。即使您可以从 Apple 应用程序中提取它们,它们也受版权保护,您无权将它们作为您自己的应用程序的一部分发布。
      • @Ken 虽然 OP 说“提取”,但我似乎很清楚他只想在他的应用程序中绘制图像,而不是复制和发布他自己的版本。 “如果它们不是标准的,那么它们就不是“默认用户体验”的一部分”,但不可否认的是,存在大量无法通过 API 命名或访问的 OS 映像。工具栏图像的简短列表很好;苹果可以在这些方面做得更多,这将帮助开发人员在他们自己的应用程序中保持苹果的外观和感觉。我看不出有什么理由反对这一点,除了苹果必须花时间......
      • @zeppenwolf:也许这就是他想要的,但是:a) 没有受支持的方式来访问这些图像,并且 b) 即使有,它们也可以随着任何软件更新而改变或消失,这使它们不适合在他的应用程序中使用。发送他自己的图像或使用受支持的 API 是唯一不错的选择。如果他对 API 提供的标准图像不满意,他应该向 Apple 提交错误。
      【解决方案3】:

      请参阅+[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

      【讨论】:

      • 看起来很短。标准查找器有更多的图标也适合我的应用程序。是否有可能以某种方式提取它们?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      相关资源
      最近更新 更多