如何在 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 Types 和 Exported 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 产品首选项编辑器的资产目录中访问图像(用于文档图标)的主要内容,如果未能解决你的问题,请参考以下文章