我正在尝试为我的应用的文档类型注册一个图标。在阅读Declaring New Uniform Type Identifiers并查看/Developer/Examples/Sketch
之后,我在Info.plist
中想出了类似的内容:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array>
<string>com.mycompany.myextension</string>
</array>
<key>NSDocumentClass</key>
<string>NSString</string>
</dict>
</array>
...
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeDescription</key>
<string>Blah blah blah</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeIconFile</key>
<string>My-file-icon.icns</string>
<key>UTTypeIdentifier</key>
<string>com.mycompany.myextension</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>myextension</string>
</array>
</dict>
</dict>
</array>
现在,一切都很好,花花公子,即当我点击带有我的扩展程序的文件等时我的程序被打开了。但是,文档图标没有在操作系统中注册,即我看到一个丑陋的空白图标而不是我的美丽的My-file-icon.icns
。我怀疑我在上面的plist中遗漏了什么,有什么想法吗?
答案 0 :(得分:10)
尝试将图标名称放在CFBundleTypeIconFile
数组的CFBundleDocumentTypes
键中,而不是UTExportedTypeDeclarations
数组中。
当然,请确保“My-file-icon.icns”位于目标的Copy Bundle Resources构建阶段,并被复制到应用程序包中的Contents / Resources中。
答案 1 :(得分:2)
我也有类似的问题,结果我需要按照我在此处记录的内容重建启动服务数据库....
答案 2 :(得分:1)
您在Info.plist中的UTI声明似乎是正确的,但我注意到另一个问题。如果您的应用程序是基于文档的应用程序,则需要将以下条目中的NSString替换为您的NSDocument子类:
<key>NSDocumentClass</key>
<string>NSString</string>
例如,它是草图中的“SKTDocument”:
<key>NSDocumentClass</key>
<string>SKTDocument</string>
编辑: 另请确保为导出的UTI使用您自己的反向域名。这确保了UTI是唯一的。例如,在我的情况下它的com.mindnode.MindNode.MindNodeDocument。
答案 3 :(得分:0)
我一直试图在Xcode 11中做到这一点,这是一个挑战。这样的问题有很多答案,但是我找不到一个能解决这个问题的东西。我会在这里尝试做。
Technical Q&A QA1587尽管它有点旧,我认为它具有所需的一切,但是在某些地方有点模糊,比如说.hi {
text-decoration: underline;
}
我以为我可以使其与<h1 class="hi" >
Hi guys
</h1>
中的图标一起使用,但是直到我提供了Provide an icon for the document.
文件后,它才对我有用。我使用了1024x1024 Assets.xcassets
应用程序图标,并将其转换为cloudconvert处的icns
。然后,将png
添加到我的项目中。我认为放在哪里都不重要。我把它放在顶层之下。在下面的图片中圈了起来。
跟随图像中的箭头,您最终到达“信息”选项卡。我点击“添加”按钮来创建一个“文档类型”,并如图所示将其填写。当您点击图标部分中的添加按钮时,它将要求您提供一个icns
文件。一旦我在项目中找到了我,它就会出现在窗口中,然后可以选择它。
与已配置的UTI相同。
就是这样。在“文件”,“消息”或“邮件”中,出现图标。