为我的应用程序的文档类型注册一个图标

时间:2009-11-20 16:21:43

标签: objective-c cocoa xcode

我正在尝试为我的应用的文档类型注册一个图标。在阅读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中遗漏了什么,有什么想法吗?

4 个答案:

答案 0 :(得分:10)

尝试将图标名称放在CFBundleTypeIconFile数组的CFBundleDocumentTypes键中,而不是UTExportedTypeDeclarations数组中。

当然,请确保“My-file-icon.icns”位于目标的Copy Bundle Resources构建阶段,并被复制到应用程序包中的Contents / Resources中。

答案 1 :(得分:2)

我也有类似的问题,结果我需要按照我在此处记录的内容重建启动服务数据库....

https://stackoverflow.com/a/12466968/1571635

答案 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添加到我的项目中。我认为放在哪里都不重要。我把它放在顶层之下。在下面的图片中圈了起来。

enter image description here 跟随图像中的箭头,您最终到达“信息”选项卡。我点击“添加”按钮来创建一个“文档类型”,并如图所示将其填写。当您点击图标部分中的添加按钮时,它将要求您提供一个icns文件。一旦我在项目中找到了我,它就会出现在窗口中,然后可以选择它。

与已配置的UTI相同。

就是这样。在“文件”,“消息”或“邮件”中,出现图标。