在UIDocumentPickerViewController中显示自定义UTI的图标

时间:2014-09-02 14:47:56

标签: ios xcode ios8 uti

iOS应用程序我正在努力导出UTI。 Info.plist的相关部分如下所示:

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.xml</string>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>GPX Document</string>
        <key>UTTypeIdentifier</key>
        <string>de.company.app.gpx</string>
        <key>UTTypeSize320IconFile</key>
        <string>Doc320.png</string>
        <key>UTTypeSize64IconFile</key>
        <string>Doc64.png</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>gpx</string>
            </array>
        </dict>
    </dict>
</array>

我希望该应用能够通过&#34; Open in ...&#34;来处理GPX文件。对话,所以在同一个PLIST中还有一个文档类型定义(引用UTI):

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array>
            <string>Icon29.png</string>
            <string>Icon58.png</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>de.company.app.gpx</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>de.company.app.gpx</string>
        </array>
    </dict>
</array>

在Safari中打开GPX文件时,它会显示我在CFBundleTypeIconFiles下指定的图标,即视网膜设备上的Icon58.png。该应用程序还允许通过iOS 8中引入的UIDocumentPickerViewController类进行导入,虽然UTI定义适用于过滤iCloud Drive中的相关文件,但它不会显示我指定的任何图稿:

我确保所有引用的图像文件(Icon29.pngIcon58.pngDoc64.pngDoc320.png)确实位于应用包的根目录中。名称中的数字表示其高度(以像素为单位)。 Doc...个文件是正方形,另外两个文件是this specification(仅限iPhone)。

我基本上有两个问题:

1)如何让UIDocumentPickerViewController显示UTI的自定义图标?

2)是否还有其他使用UTTypeSize64IconFileUTTypeSize320IconFile的用例?

2 个答案:

答案 0 :(得分:3)

不幸的是,答案是除非您的应用程序可以控制这些文件如何写入磁盘,否则无法完成。在这种情况下,您可以继承UIDocument并写出缩略图。 Here是Apple工程师发布的原始答案,发布在Apple开发人员论坛上(需要登录)。它包含一个代码示例来说明它是如何完成的。

我还没有找到问题第二部分的答案。

答案 1 :(得分:1)

我相信您在CFBundleTypeIconFiles键中使用了错误的大小图标。您使用的尺寸是设置图标。

为了测试我的理论,请添加一些不同大小的文件。加上所有图标都是正方形。你问题中的图像看起来是矩形的。

根据Icon and Image Design --> App Icon部分:

  

文档图标

     

如果您的iOS应用创建自定义类型的文档,则需要用户   能够一目了然地识别这些文件。你不需要   为此目的设计自定义图标,因为iOS使用您的应用程序图标   为您创建文档图标。

摘录自App Icons

应用图标(必填)(iPhone)

  • 60 x 60像素
  • 120 x 120像素(@ 2x)

这是在iOS 7及更高版本的iPhone和iPod touch上运行的应用的主要图标。

设置图标(所有设备)

  • 29 x 29像素
  • 58 x 58像素(@ 2x)