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

svi*_*tus 8 xcode cocoa objective-c

我正在尝试为我的应用程序的文档类型注册一个图标.在阅读声明新的统一类型标识符并查看后,/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>
Run Code Online (Sandbox Code Playgroud)

现在,一切都很好,花花公子,即当我点击带有我的扩展名的文件等时我的程序被打开.但是,文档图标没有在操作系统中注册,即我看到一个丑陋的空白图标而不是我的美丽My-file-icon.icns.我怀疑我在上面的plist中遗漏了什么,有什么想法吗?

cde*_*osa 10

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

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


Mur*_*gal 5

我一直在尝试在 Xcode 11 中做到这一点,这是一个挑战。对于这样的问题,这里有很多答案,但我找不到一个拥有完成这项工作所需的一切的答案。我会在这里尝试这样做。

技术问答 QA1587虽然这有点旧,但我认为它拥有所需的一切,但在某些地方有点模糊,例如它说Provide an icon for the document.

我以为我可以让它与图标一起工作Assets.xcassets,但直到我提供了一个文件后它才对我起作用icns。我采用了 1024x1024png应用程序图标并将其转换为cloudconverticns的此处。然后我将其添加到我的项目中。我认为你把它放在哪里并不重要。我把它放在顶层的正下方。就是下图中圈出来的。icns

在此输入图像描述 按照图像中的箭头操作,您最终会看到“信息”选项卡。我点击“添加”按钮创建文档类型并填写,如图所示。当您点击图标部分中的“添加”按钮时,它会要求您提供icns文件。一旦我将我的项目放入项目中,它就会出现在窗口中,我可以选择它。

对于已配置的 UTI 也是如此。

就是这样。在文件、消息或邮件中会出现该图标。