如何在 Xcode 5 产品首选项编辑器的资产目录中访问图像(用于文档图标)

Posted

技术标签:

【中文标题】如何在 Xcode 5 产品首选项编辑器的资产目录中访问图像(用于文档图标)【英文标题】:How do I access images (for document icons) in an asset catalog in the Xcode 5 product preference editor 【发布时间】:2013-11-07 20:34:13 【问题描述】:

我认为在提交新的 Mac 应用程序之前,我确实处于最后一步,在过去的几个小时里,我一直在努力思考我认为应该非常非常简单的事情。

我为我的应用创建和使用的两种不同类型的图标设计了文档图标。我在 Images.xcassets 中创建了一个新的“图标”,并将相应的文件拖放到拖放区中。

在产品编辑器 -> 信息中,我转到文档类型信息所在的位置,但是当我尝试在“文档类型”或“导出的 UTI”部分的“图标”字段中输入图标名称时,图标图像只是变成了一个问号——图标的下拉菜单中没有显示任何选项。

如何让资产目录中的图像/图标显示在编辑器中?或者,如果我要手动将其输入到 plist 中,我将使用哪种格式来引用资产目录中的图标文件?

我知道我可能在这里遗漏了一个简单的步骤,但我看不到它!

【问题讨论】:

【参考方案1】:

据我所知,Xcode 目前不支持将 .xcassets 用于文档图标。这有点奇怪——.xcassets 编辑器明确允许您创建新图标,但它不会生成 .icns 文件,它只是将所有文件放在同一个文件夹中并使用 plist 来管理它们。

要为您的文档类型创建图标,请将 1024x1024 版本的图标上传到 http://iconverticons.com/online/ 以将其转换为 .icns 文件。或者,您可以使用第三方工具生成 .icns 文件,其中包含针对不同分辨率的不同图像。开发者工具中曾经有一个很棒的工具可以做到这一点,但我似乎再也找不到了。

获得 icns 文件后,将其添加到您的项目中,您应该能够选择它作为您的文档类型或外部/内部 UTI 的“图标”。享受吧!

说实话,可能值得为此提交一个错误。现在 Xcode 的开发似乎受到 ios 的强烈推动,他们可能还没有注意到这一点!

【讨论】:

这证实并解释了我最终认为我看到的内容。这似乎是一个明显缺失的功能,并且文档没有指出它应该如何工作。由于缺乏文档,我的应用程序中依赖于不同文档类型的部分是最难实现的部分。 我发现我必须手动将.icns文件添加到Info.plist中。 Xcode 中的拖放对我不起作用。<key>CFBundleTypeIconFiles</key><array><string>document.icns</string></array>。即便如此,我必须将 4 种尺寸包括为 .png(22x29、44x58、64x64 和 320x320) OS X(或者可能是 Xcode?但它在 /usr/bin 中)带有一个名为 iconutil 的命令行工具,可以在 .icns 文件和包含 PNG 的 .iconset 文件夹之间进行转换.【参考方案2】:

我用最简单的方法做到了:

    例如,将“新 OS X 图标”添加到 images.xcassets 并将其命名为“DocIcon”。 拖放文档图标的图像 只需在文档的图标名称中输入“DocIcon”

您将看到问号作为文档图标缩略图。别在意。构建和启动应用程序后,一切都会正常工作。

【讨论】:

当我保存文件时,它有一个“空白”图标,但是当我检查它的属性时,我看到了我的图标。有什么想法吗? 是的,这行得通!关于 Xcode 不支持这一点的旧信息不再适用。 在几次发布后工作。【参考方案3】:

这对我有用,在 2019 年使用 Xcode 10(在我的情况下,其他答案均无效):

    在项目导航器中选择资产目录 右键单击左窗格(资产列表)并选择应用程序图标和启动图像▶︎ 新的 macOS 通用图标(从底部开始的第二个选项)。将其命名为“文档”。这将在资产目录目录中创建一个名为“Document.iconset”的文件夹。 使用您的自定义图像填充所有条目。它们都必须具有适当的大小(例如,“16 x 16 @2x”必须为 32 x 32 像素,否则您会在图片槽上方看到黄色的警告图标)。

    导航到资产目录文件夹,并使用命令:iconutil -c icns Document.iconset(必须与在步骤 #2 中创建的图标名称匹配)。我从 Apple 的文档 here 中获取了这个命令(顺便说一句,其中还提到了一些关于 Xcode “在构建时自动从你的 .iconset 文件夹创建一个 .icns 文件”的废话。当然……)。

    李>

    将新创建的 Document.icns 文件作为资源复制到您的项目中。

    选择目标,打开 Info 窗格,然后在 Document TypesExported UTIs 中将您的 .icns 文件设置为文件类型的图标。

【讨论】:

这让我获得了资产资源,并且从那里图像确实显示为文档类型和导出的 uti。不幸的是,我不知道为什么我仍然收到消息“也许它应该在这个应用程序的 Info.plist 的 UTExportedTypeDeclarations 部分中声明,但不是。所谓的 UTI 是”,后跟字符串 com.xxx .yyy 在两个地方都作为标识符,并且图标也不显示在查找器中。可能是同样的问题,但是什么?【参考方案4】:

嘿嘿嘿,

我遇到了同样的问题,并且已经研究了好几天。我找到了四个解决方案,其中前三个对我不起作用: 1. 使用 .png 文件作为文档类型图标文件; 2.使用手动创建的.icns文件作为文档类型图标文件; 3.上述解决方案,以及4.我将在这里描述的内容。只有最后一个对我有用。

我尝试遵循上述建议的精神,发现它不起作用,至少对于我的 MacOS 应用程序而言。我在运行 Xcode 版本 5.1 (5B130a) 的 OS X 10.9.2 (13C64) 上。

目前的智慧似乎是在您的工作空间中创建一个具有小写名称和 .iconset 扩展名的目录,其中放置带有 icon_ 前缀和通常后缀的文件(16x16.png、16x16@2x.png , 32x32.png 等)

在产品编辑器的信息窗格中,您可以进入文档类型并将 .iconset 文件与图标字段相关联。图标图像愉快地显示了一些合理的东西。构建过程会根据该规范构建一个 .icns 文件并将其复制到您的应用中。

我遇到了 .icns 文件无法构建的间歇性问题,我追踪到该问题错误地在列表中包含了一个 64x64 图标。这是不行的。

可以在official documentation 中找到有关此问题的当前 Apple 教条,其中涵盖了我在此处省略的一些细节。我不需要直接编辑 Info.plist 文件:一切似乎都可以通过 Xcode 中提供的接口进行。

我不知道哪种解决方案适用于哪种情况,但我想我会添加更多替代方案供人们尝试。 — Jim Coplien

【讨论】:

以上是关于如何在 Xcode 5 产品首选项编辑器的资产目录中访问图像(用于文档图标)的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JPEG 添加到 Xcode 中的资产目录?

`imageWithName:` 忽略 Xcode 资产目录`Alignment` 属性

如何以编程方式将矢量图像放入 iOS 资产目录

在 XCode 5 中使用多个资产目录的问题

资产目录在 Xcode 5 中是不是强制要求应用商店批准

Xcode 5.1 + 资产目录 + 存档 = AppIcon 无效图像路径