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

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

 UTExportedTypeDeclarations   UTTypeConformsTo  public.xml public.data  UTTypeDescription GPX Document UTTypeIdentifier de.company.app.gpx UTTypeSize320IconFile Doc320.png UTTypeSize64IconFile Doc64.png UTTypeTagSpecification  public.filename-extension  gpx     

我希望应用程序通过“Open in …”对话框处理GPX文件,因此在同一个PLIST中还有一个文档类型定义(引用UTI):

 CFBundleDocumentTypes   CFBundleTypeIconFiles  Icon29.png Icon58.png  CFBundleTypeName de.company.app.gpx CFBundleTypeRole Editor LSHandlerRank Owner LSItemContentTypes  de.company.app.gpx    

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

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

我基本上有两个问题:

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

2)是否存在使用UTTypeSize64IconFileUTTypeSize320IconFile其他用例?

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

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

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

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

根据图标和图像设计 – >应用程序图标部分 :

文档图标

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

摘自应用程序图标 :

应用程序图标(必填)(iPhone)

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

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

设置图标(所有设备)

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